处理SailsJS中的服务器错误

我正在SailsJS中创build一个应用程序。 我遇到类似错误,types错误或500错误时发生数据库相关查询中的一些错误。我正在使用MongoDB。 有什么办法可以在服务器端捕获这个错误。

现在,这些错误正在崩溃我的服务器。 服务器停止。 我必须重新启动服务器。

请帮我解决这个问题。 提前致谢。

水线很可能是抛出一个exception,你不捕捉它。 这里有一些代码来解决这个问题:

controlleAction:function(req,res){ var invalidParams = {};//whatever's causing the error Model .create(invalidParams) .exec(function(err,created){ if(err) res.json(err); res.json(created); }); } 

你也可以使用promise语法

 controlleAction:function(req,res){ var invalidParams = {};//whatever's causing the error Model .create(invalidParams) .then(function(created){ res.json(created); }) .catch(function(err){ res.json(err); }); } 

如果您想要捕捉整个应用程序中的所有全局错误,请在您的app.js中find如下所示的行:

 // Start server sails.lift(rc('sails')); 

用一个try catch块来包围该行,如下所示:

 try{ // Start server sails.lift(rc('sails')); }catch(e){ console.dir(e); } 

请注意:

 controlleAction:function(req,res){ var invalidParams = {};//whatever's causing the error Model .create(invalidParams) .exec(function(err,created){ // return res.json() if(err) return res.json(err); return res.json(created); }); } // The difference is in the return if(err) return res.json(err); 

如果你有一个错误,没有返回,服务器将崩溃,因为它会尝试发送两个错误的响应,另一个与创build的对象。

如果您正在使用Sails 0.10.x,则可以将错误传递给下一个处理程序:

 controlleAction:function(req,res, next){ var invalidParams = {};//whatever's causing the error Model .create(invalidParams) .exec(function(err,created){ if(err) return next(err); return res.json(created); }); } 

然后处理“自定义响应”中的错误