データがすでにデータベースに存在する場合、データベースの挿入中に Promise チェーンを破るにはどうすればよいですか?
<p>メンバーがデータベースにすでに存在するかどうかを確認した後、mongoose を使用してデータベースに新しいメンバー エントリを作成しています。メンバーがすでに存在する場合は応答を返す必要があり、そうでない場合は新しいメンバーの挿入を続行します。
コードは次のとおりです: </p>
<pre class="brush:php;toolbar:false;">createNewMember = (req, res, next) => {
Member.findOne({電子メール: 電子メール}).exec()
.then((メンバー) => {
if(メンバー == null || members.length==0) {
//新しいメンバーオブジェクトを作成する
return newMember.save() // 1 --> プロミスを返す
} それ以外 {
res.status(409).json({message: "メンバーはすでに存在します"}) // 2 --> 戻りたい
}
})
.then((結果) => {
if(res.statusCode === 409) return res; // 3 --> 問題を解決するためにこのハックを追加しました
return res.status(201).json({message: "メンバーが作成されました"}); // 4 -->> newMember.save() のブロック
})
.catch(err => {
// エラーを処理し、エラー応答を返します。
})</pre>
<p>私が望むのは、プロセスがポイント 2 に到達すると、Promise チェーンは壊れますが、2 番目の then ブロックは引き続き呼び出されることです。ポイント 3 は、2 番目の then ブロックが実行されないようにするために追加したチェックですが、これを処理する最善の方法とは思えません。
これは一般的なシナリオだと思いますが、より良い方法はありますか? </p>