问完后这个问题 https://stackoverflow.com/questions/22160043/how-to-use-a-callback-array-as-the-handler-for-a-sails-js-route,我发现我可以将回调数组添加到 sails 应用程序中的端点,如下所示:
file: /api/policies/somepolicy.js
module.exports = thisIsAnArrayOfCallbacks;
这工作正常,而每个成员thisIsAnArrayOfCallbacks
is a function
它接受req
, res
, and next
作为参数。控制器调用执行数组中的所有函数,并在正常流程中获得预期结果。
但是当使用errorHandler
回调(就像这个例子 https://github.com/jaredhanson/oauth2orize/blob/master/examples/express2/oauth2.js#L142)这需要额外的err
参数,它没有按预期工作:仅 Express 版本app.get('/path', thisIsAnArrayOfCallbacks)
允许errorHandler
获取异常并向客户端报告正确的响应,但是当使用 sails 方式时,errorHandler
函数不会被调用,并且异常会在响应中抛出。
我怎样才能获取err
参数或捕获函数之一中发生的异常thisIsAnArrayOfCallbacks
向客户发送正确的响应(首选自定义响应)?
提前致谢。
您是正确的,策略不能定义为错误回调;它们只是路由处理中间件,并且实际上绑定到它们所应用的每个单独的路由。理想情况下,您可以使用以下方法捕获策略函数本身内的任何错误try/catch
并使用类似的东西发送响应res.forbidden()
, res.badRequest()
, res.serverError()
等。在 Sails v0.10 中,您可以进行任何您想要的自定义响应并将其存储在api/responses
folder.
如果您确实想在 Sails 中实现一个包罗万象的错误处理程序,您有两种选择:要么覆盖默认的 500 处理程序(在 Sails v0.10 中,它位于/api/responses/serverError
,在 v0.9.x 中是config/500.js
),或者(在 v0.10 中)创建自定义 Express 中间件并使用加载它sails.config.express.loadMiddleware
. See 这个问题 https://stackoverflow.com/questions/21939832/adding-jquery-file-upload-middleware-to-sails-js/21946577#21946577有关第二个选项的详细信息,请记住添加自定义错误处理程序after路由器和before(或代替)500 处理程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)