.catch()
使用 Promise 执行 Waterline 查询实例。
.catch(callback)
从 Sails v1 和 Node.js v8 开始,您可以利用
await
来替代此方法。
参数 | 类型 | 详情 | |
---|---|---|---|
1 | filter | 一个可选的字典,其属性将与错误进行比对。如果所有属性都匹配,则回调函数将执行,否则不会执行。 | |
2 | callback | 查询失败时执行的函数。 以错误作为其参数。 |
参数 | 类型 | 详情 | |
---|---|---|---|
1 | err | 发生的错误,或如果没有任何错误,则为 undefined 。 |
查找具有指定电子邮件地址的用户
User.findOne({
email: req.param('email')
})
.then(function (user){
if(!user) { return res.notFound(); }
return res.json(user);
})
// If there was some kind of usage / validation error
.catch({ name: 'UsageError' }, function (err) {
return res.badRequest(err);
})
// If something completely unexpected happened.
.catch(function (err) {
return res.serverError(err);
});
- 尽可能地,建议您使用
await
来替代调用此方法。- 这是
.exec()
的替代方案。与.then()
结合使用时,它提供了相同的功能。.catch()
函数也返回一个 Promise 以便进行链式调用。由于链式.catch()
调用的复杂(且可以说是非直观的)行为,不建议对除最高级别的 Promise 用户之外的任何人使用它。- 有关更多信息,请参阅 bluebird
.catch()
API 文档。
req
)