Javascript FeathersJS-如何取消错误挂钩
在我的注册服务中,我创建了一个“before”钩子来检查用户是否已经注册到锦标赛。如果发现用户已注册,我会让它抛出一个错误 根据FeatherJS文档: 如果承诺失败,错误将立即传播并将 退出承诺链 我遇到的问题是错误被“触发”,并显示用户已经注册,但注册仍然发生。也就是说,钩子永远不会“退出” 这是我的功能Javascript FeathersJS-如何取消错误挂钩,javascript,feathersjs,Javascript,Feathersjs,在我的注册服务中,我创建了一个“before”钩子来检查用户是否已经注册到锦标赛。如果发现用户已注册,我会让它抛出一个错误 根据FeatherJS文档: 如果承诺失败,错误将立即传播并将 退出承诺链 我遇到的问题是错误被“触发”,并显示用户已经注册,但注册仍然发生。也就是说,钩子永远不会“退出” 这是我的功能 exports.checkRegistered = () => { return (hook) => { let tourneyId = hook.da
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()
]
};
问题是
.catch(err=>{})
。它将返回一个承诺,该承诺刚刚成功地解决了undefined
,然后将继续钩子链,就像没有发生错误一样。删除它应该可以解决您的问题。因为那次投掷可能会在比赛结束后进行。我的建议是返回承诺。我尝试了return-promise.reject(新错误('Error message')),但注册仍然进行。我做得不对吗?嗯。。它应该会起作用。不如试着用承诺来包装它,就像我要尝试的例子一样。谢谢你的指导!谢谢,达夫,这解决了问题!