Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Sails.js策略中使用错误处理程序回调?_Node.js_Express_Sails.js - Fatal编程技术网

Node.js 如何在Sails.js策略中使用错误处理程序回调?

Node.js 如何在Sails.js策略中使用错误处理程序回调?,node.js,express,sails.js,Node.js,Express,Sails.js,询问之后,我发现我可以向sails应用程序中的端点添加回调数组,如下所示: 文件:/api/policies/somepolicy.js module.exports = thisIsAnArrayOfCallbacks; 当的每个成员都是一个函数时,它可以正常工作,该函数接受req、res和next作为参数。控制器调用执行数组中的所有函数,并在正常流中获得预期结果 但是当使用errorHandler回调(如中的回调)时,它不会像预期的那样工作:express only版本app.get('/

询问之后,我发现我可以向sails应用程序中的端点添加回调数组,如下所示:

文件:
/api/policies/somepolicy.js

module.exports = thisIsAnArrayOfCallbacks;
的每个成员都是一个
函数时,它可以正常工作,该函数接受
req
res
next
作为参数。控制器调用执行数组中的所有函数,并在正常流中获得预期结果

但是当使用
errorHandler
回调(如中的回调)时,它不会像预期的那样工作:express only版本
app.get('/path',thiisanarayofcallbacks)
允许
errorHandler
获取异常并向客户端报告正确的响应,但是当使用sails方式时,不会调用
errorHandler
函数,并且在响应中抛出异常

如何获取
err
参数或捕获
thisisanarayofcallbacks
的某个函数中发生的异常,以向客户端发送正确的响应(首选自定义响应)


提前感谢。

您是正确的,策略不能定义为错误回调;它们只是路由处理中间件,实际上绑定到应用它们的每个单独的路由。理想情况下,您可以使用
try/catch
捕获策略函数本身中的任何错误,并使用
res.forbidden()
res.badRequest()
res.serverError()
,发送响应,等等。在Sails v0.10中,您可以做出任何自定义响应,并将其存储在
api/responses
文件夹中

如果您真的想在Sails中实现一个全面的错误处理程序,您有两个选择:要么覆盖默认的500处理程序(在Sails v0.10中,这是在
/api/responses/serverError
,在v0.9.x中是
config/500.js
),要么(在v0.10中)创建自定义Express中间件并使用
sails.config.Express.loadMiddleware
加载它。有关第二个选项的详细信息,请参阅,并记住在路由器之后和500处理程序之前(或代替500处理程序)添加自定义错误处理程序