我有以下情况,我有一个中间件,在用户登录时添加标志
//if some situation happend
req.feathers.isAuthenticated = true;
//else
req.feathers.isAuthenticated = false;
next();
我有一个钩子,检查用户是否已登录某些服务
myService.before({
create(hook, next) {
if (!hook.params.isAuthenticated) {
throw new Error('AccessDenied');
}
next();
}
});
这项工作如预期的那样,问题在于错误处理程序,当我在我的应用程序结束时添加一个简单的错误处理程序
app.use(function (err, req, res, next) {
if (isDev) {
console.error(err);
}
res.status(err.status || 500);
res.json(err);
});
错误对象是整个挂钩对象,也是错误的实例
我只想获取之前抛出的错误,我尝试在钩子上调用next(err)
,但这不起作用。
有人可以帮我解决这个问题吗?
我想不删除错误处理程序
上的hook属性答案 0 :(得分:0)
当您致电next(error)
时,您还必须同时返回,以便next
不再被召唤:
myService.before({
create(hook, next) {
if (!hook.params.isAuthenticated) {
return next(new Error('AccessDenied'));
}
next();
}
});
如果这也不起作用,请file an issue in feathers-hooks。