私はdb内の新しいユーザーを作成するためのロジックを扱うミドルウェアを使用しています。この関数は、ユーザーの電子メールがすでに存在するかどうかをチェックし、そうでない場合は新しい文書を作成します。そうでない場合は、クライアントにエラーが送信されます。ExpressJSチェーンはnext()関数を複数回呼び出すことを約束します
(下)この機能で問題が
私は、ちょうどないチェーンこれら二つの約束を使用しない可能性があり、ユーザーの電子メールが既にDBに存在する場合、次の()ミドルウェア機能が2回呼び出されていることです誰かがこの種のエラー処理を解決する良いパターンを持っていれば、おそらく私のコードが間違っているか、私は約束を忘れていました。
create: function(req, res, next) {
// Check if email already exist
userDB.byEmail(req.body.email).then(function(doc) {
if (doc) {
res.setError('This email already exists', 409);
return next();
}
// Return other Promise
return userDB.create(req.body);
}).then(function(doc) {
res.setResponse(doc, 200);
return next();
}).catch(function(err) {
res.setError('Service seems to be unavailables', 503);
return next();
});
},
注:私はちょうど私が要求状態を管理するのに役立つ個人的な方法のres.setError()またはres.setResponse() を使用していますし、私は 次のミドルウェア機能をres.sendを使用します
みんなありがとう3
ご回答ありがとうございました。 - これは、約束どおりにエラーを投げる良いパターンですか? 私は約束を新しくしました。コールバックはtry/catchを使用できないため、nodeJS関数(err、res) 'パターンを使用しました。したがって、throw Error –