FeathersJS - 如何在错误时取消挂钩

时间:2017-06-06 00:34:15

标签: javascript feathersjs

在我的注册服务中,我创建了一个'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()
  ]
};

1 个答案:

答案 0 :(得分:1)

问题是tableView.indexPathsForSelectedRows 。它将返回一个只用.catch(err => {})成功解析的promise,然后将继续挂钩链,就像没有发生错误一样。删除它应该可以解决您的问题。