如何在操作挂钩中返回错误?
用例是在保存新模型实例后发送推送通知。
我观察'after save'
事件,发送推送。如果由于某种原因失败,我想发送500 response
代码。我该怎么做?
我无法找到ctx
对象实际上或包含的内容的文档。
Customer.observe('after save', function(ctx, next) {
//model saved, but sending push failed for whatever reason, and I want to now send a 500 error back to the user
//how? what's inside ctx? how do you send back a response?
next();
});
谢谢
答案 0 :(得分:11)
我相信它是这样的:
var error = new Error();
error.status = 500;
next(error);
答案 1 :(得分:9)
扩展上一个答案,因为我还无法添加评论。
您可以通过以下方式为错误响应提供更多信息:
var error = new Error();
error.status = 401;
error.message = 'Authorization Required';
error.code = 'AUTHORIZATION_REQUIRED';
这将返回如下内容:
{
"error": {
"name": "Error",
"status": 401,
"message": "Authorization Required",
"code": "AUTHORIZATION_REQUIRED",
"stack": "Error: Authorization Required\n at ..."
}
}
答案 2 :(得分:0)
有关于 ctx 实际包含的详细文档。它可以在Loopback after-save operation hook docs中找到。
ctx对象具有instance
方法,该方法返回已保存的模型实例。您可以在检查模型实例后返回错误,如下所示:
if (ctx.instance) {
// check if your push operation modified the instance
// If condition is not met, throw the error
var error = new Error()
error.status = 500
error.message = '...'
next(error)
}
上面的文档涵盖了after save
钩子的ctx对象的属性。