【发布时间】:2017-06-07 19:07:20
【问题描述】:
在我的注册服务中,我创建了一个“之前”挂钩来检查用户是否已经注册到锦标赛。如果发现用户已注册,我让它抛出一个错误。
每个 feathersjs 文档:
如果一个promise失败,错误将立即传播,并将 退出承诺链。
我遇到的问题是错误被“触发”并显示用户已经注册,但注册仍然发生。意思是,钩子永远不会“退出”。
这是我的功能
exports.checkRegistered = () => {
return (hook) => {
let tourneyId = hook.data.tourneyId
let userId = hook.data.userId
return hook.service.find({
query: {
tourneyId: tourneyId,
userId: userId
}
}).then(reg => {
// User already registered
if (reg.data.length != 0) {
// Also tried to return a promise with same result.
// return Promise.reject(new Error('Already registered.'))
throw new Error('Already registered');
}
}).catch(err => {})
}
}
这是我的“挂钩前”对象
exports.before = {
create: [
api.checkRegistered()
]
};
【问题讨论】:
-
因为在那之后投掷可能会去接球。我的建议是回报一个承诺。
-
我尝试了 return Promise.reject(new Error('Error message')),但注册仍然通过。我做错了吗?
-
嗯..它应该工作。试试用一个承诺包装它怎么样,就像例子here
-
我会试试看的。感谢您的指导!
标签: javascript feathersjs