在我的注册服务中,我创建了一个'before'钩子来检查用户是否已注册锦标赛。如果发现用户已注册,我就会抛出错误。
Per feathersjs文档:
如果承诺失败,错误将立即传播并且将会传播 退出承诺链。
我遇到的问题是错误被“触发”并显示用户已经注册,但注册仍然发生。意思是,钩子永远不会“退出”。
这是我的功能
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()
]
};
答案 0 :(得分:1)
问题是tableView.indexPathsForSelectedRows
。它将返回一个只用.catch(err => {})
成功解析的promise,然后将继续挂钩链,就像没有发生错误一样。删除它应该可以解决您的问题。