シナリオの説明
レコードを更新する必要がある場合、まず、このレコードの名前が 集合Collection
(それ自体を除く) に既に存在するかどうかを確認します。
論理的方向
ステップ 1: セットの中で自分を見つける
ステップ 2: 名前に従ってセットの中で自分を見つける
ステップ 3: Step 1的_id
と <🎜 を判断する> 一致するかどうかStep 2的_id
ステップ 4: 2 つの _id が一致しない場合は、「名前はすでに存在します」というプロンプトが表示され、一致しない場合はレコードの更新を完了します
。
と Step 1的_id
が一致できないことです。 Step 2的_id
リーリー
私の考えに何か問題があるのか、あるいは私のコードに何か問題があるのかもしれません...
あなたのコードを整理させてください。正直に言うと、私はあなたのコーディング スタイルがあまり好きではありません。あらゆる種類の不要な変数宣言がコード表現の質を低下させるからです。
まず第一に、req.bodyを使用しているため、expressを使用していると思いますリーリー
つまり、投稿リクエストには 2 つの値が渡され、1 つは _id で、もう 1 つは name です。そのため、2 つの検索結果 (2 つのドキュメント) が得られます。 ) そして、_id 検索で取得したドキュメントと名前で検索したドキュメントが同じであるかどうかを比較しようとします (もちろん、_id を比較するということは、それらが同じドキュメントであるかどうかを比較することです)リーリー
これは findOne を使用します。これは 1 つのレコードのみを返します。おそらく、ライブラリ内に同じ名前の値が複数あり、取り出した値が必要な値とは異なる可能性があります。
手順 1 で取得した _id を
String()
を使用して変換する方法が見つかりました。完全なコード
リーリー