私の登録サービスでは、ユーザーが既にトーナメントに登録されているかどうかを確認するための 'before'フックを作成しました。ユーザーが登録されていることが判明した場合、私はエラーを投げます。 PERはドキュメントfeathersjsFeathersJS - エラー時にフックをキャンセルする方法
:約束が失敗した場合
を、エラーがすぐに反映されますと約束チェーンのうちだろう 終了。
私が抱えている問題は、「トリガーされて」、ユーザーが既に登録済みであることを示していますが、登録はまだ行われているという問題です。意味、フックは決して "出る"ことはありません。
は、ここに私の機能ここで
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()
]
};
そのスローはおそらく当時の後にキャッチに移動するためです。私のアドバイスは約束を返す。 – Jalil
Promise.reject(新しいエラー( 'エラーメッセージ'))を返そうとしましたが、登録はまだ実行されます。私はそれを間違ってやっていますか? –
うーん..それは動作するはずです。どのように約束でそれをラップしてみてください、ちょうどここの例[ここ](https://github.com/feathersjs/feathers-docs/blob/master/api/hooks.md#asynchronous-hooks)のように – Jalil