错误处理程序羽毛js中的钩子对象

时间:2016-10-07 13:46:35

标签: javascript node.js feathersjs

我有以下情况,我有一个中间件,在用户登录时添加标志

//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属性

1 个答案:

答案 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