询问后this question ,我发现我可以像这样将回调数组添加到 sails 应用程序中的端点:
文件:/api/policies/somepolicy.js
module.exports = thisIsAnArrayOfCallbacks;
当 thisIsAnArrayOfCallbacks
的每个成员都是一个 function
接受 req
、res
和 next
作为参数。 Controller 调用执行数组中的所有函数,并在正常流程中获得预期结果。
但是当使用带有额外 err
参数的 errorHandler
回调(如 this example 中的回调)时,它不会按预期工作:express-只有版本 app.get('/path', thisIsAnArrayOfCallbacks)
允许 errorHandler
获取异常并向客户端报告正确的响应,但是当使用 sails 方式时,未调用 errorHandler
函数,并在响应中抛出异常。
我如何获取 err
参数或捕获 thisIsAnArrayOfCallbacks
函数之一中发生的异常以向客户?
提前致谢。
最佳答案
您说得对,政策不能定义为错误回调;它们只是路由处理中间件,实际上绑定(bind)到它们所应用的每个单独路由。理想情况下,您会使用 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
加载它>。参见 this SO question有关第二个选项的详细信息,请记住在路由器之后和 500 处理程序之前(或代替)添加自定义错误处理程序。
关于node.js - 如何在 Sails.js 策略中使用错误处理程序回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22182326/