Express - MongoDB、レコードを更新するときに値がすでに存在するかどうかを確認する方法
淡淡烟草味
淡淡烟草味 2017-05-02 09:22:58
0
3
699

シナリオの説明
レコードを更新する必要がある場合、まず、このレコードの名前が 集合Collection (それ自体を除く) に既に存在するかどうかを確認します。

論理的方向
ステップ 1: セットの中で自分を見つける
ステップ 2: 名前に従ってセットの中で自分を見つける
ステップ 3: Step 1的_id と <🎜 を判断する> 一致するかどうかStep 2的_idステップ 4: 2 つの _id が一致しない場合は、「名前はすでに存在します」というプロンプトが表示され、一致しない場合はレコードの更新を完了します

現在発生している問題は、

Step 1的_id が一致できないことです。 Step 2的_id

コードを添付してください

リーリー

私の考えに何か問題があるのか​​、あるいは私のコードに何か問題があるのか​​もしれません...

淡淡烟草味
淡淡烟草味

全員に返信(3)
世界只因有你

あなたのコードを整理させてください。正直に言うと、私はあなたのコーディング スタイルがあまり好きではありません。あらゆる種類の不要な変数宣言がコード表現の質を低下させるからです。

まず第一に、req.bodyを使用しているため、expressを使用していると思います

リーリー

つまり、投稿リクエストには 2 つの値が渡され、1 つは _id で、もう 1 つは name です。そのため、2 つの検索結果 (2 つのドキュメント) が得られます。 ) そして、_id 検索で取得したドキュメントと名前で検索したドキュメントが同じであるかどうかを比較しようとします (もちろん、_id を比較するということは、それらが同じドキュメントであるかどうかを比較することです)

あなたが指定した条件に基づいて、私は最初に、あなたが指定した req.body の _id と name が 2 つの異なるドキュメントからのものであるかどうかを推測しました。それとも、データベース内に同じ名前のドキュメントが 2 つあり、名前検索で取得したドキュメントと ID 検索で取得したドキュメントが同じではないのでしょうか。

最後の console.log の前に docById と docByName を出力して、マングース スキームを投稿して確認することができます。これにより、少なくともどのような種類のデータベースを探しているのかがわかります。
いいねを押す +0
滿天的星座

リーリー

これは findOne を使用します。これは 1 つのレコードのみを返します。おそらく、ライブラリ内に同じ名前の値が複数あり、取り出した値が必要な値とは異なる可能性があります。

いいねを押す +0
刘奇

手順 1 で取得した _id を String() を使用して変換する方法が見つかりました。

完全なコード

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート