【问题标题】:How to use an error-handler callback in a Sails.js policy?如何在 Sails.js 策略中使用错误处理程序回调?
【发布时间】:2014-03-04 20:28:58
【问题描述】:

在询问this question 之后,我发现我可以像这样在sails 应用中向端点添加一个回调数组:

文件:/api/policies/somepolicy.js

module.exports = thisIsAnArrayOfCallbacks;

thisIsAnArrayOfCallbacks 的每个成员都是function 时,这可以正常工作,它接受reqresnext 作为参数。控制器调用执行数组中的所有函数,并以正常流程获得预期结果。

但是,当使用带有额外 err 参数的 errorHandler 回调(如 this example 中的回调)时,它无法按预期工作:仅 express 版本 app.get('/path', thisIsAnArrayOfCallbacks) 允许 errorHandler获取异常并向客户端报告正确的响应,但是在使用sails方式时,不会调用errorHandler函数并在响应中抛出异常。

如何获取err 参数或捕获thisIsAnArrayOfCallbacks 的功能之一中发生的异常以向客户端发送正确的响应(首选自定义响应)?

提前致谢。

【问题讨论】:

    标签: node.js express sails.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-05
      • 2015-06-27
      • 2014-12-19
      • 2010-12-07
      • 2011-05-19
      • 2010-12-10
      • 2014-04-09
      • 2021-04-27
      • 2011-04-24
      相关资源
      最近更新 更多