res.negotiate()
此方法已弃用.
您应该使用 自定义响应 代替。
要处理来自 Waterline 模型方法 的错误,请检查错误的
name
属性(有关更多详细信息,请参阅 Waterline 错误参考)。
给定一个错误(err
),通过检查 status
属性来尝试猜测应该调用哪个错误响应(badRequest
、forbidden
、notFound
或 serverError
)。如果 err
不是字典,或者 status
属性与已知的 HTTP 状态代码不匹配,则默认使用 serverError
。
对于处理来自 Model.create() 或 Model.update() 的潜在验证错误特别有用。
return res.negotiate(err);
与其他内置的自定义响应模块一样,此方法的行为是可以自定义的。
res.negotiate()
检查提供的错误(err
)并从以下方法之一确定适当的错误处理行为:
res.badRequest()
(400)res.forbidden()
(403)res.notFound()
(404)res.serverError()
(500)判断是根据 err
的“status”属性进行的。如果无法确定更具体的诊断(例如 err
没有“status”属性,或者它是一个字符串),Sails 将默认使用 res.serverError()
。
// Add Fido's birthday to the database:
Pet.update({name: 'fido'})
.set({birthday: new Date('01/01/2010')})
.exec(function (err, fido) {
if (err) return res.negotiate(err);
return res.ok(fido);
});
- 此方法是终结性的,这意味着它通常是您的应用程序针对给定请求运行的最后一行代码(因此这些文档中建议使用
return
)。res.negotiate()
(与其他用户响应方法一样)可以被覆盖 - 只需定义一个响应模块(/responses/negotiate.js
)并导出一个函数定义。- 此方法用作 Sails 中未捕获错误的默认处理程序。这意味着如果在任何请求处理代码中抛出错误,它将被自动调用,但仅在事件循环的初始步骤内。您应该始终专门处理异步代码中回调/Promise 中可能出现的错误。
req
)