2017-08-23 13 views
0

NodeJS、MongoDB、Mongooseを使用してAPIエンドポイントの助けを借りて簡単なCRUDアプリケーションを開発しようとするかなり新しい開発者です。 MongooseドライバのfindOneAndUpdateメソッドを使用してドキュメントを更新すると、正しい結果が得られません。Nongoose findOneAndUpdate()はNodeJSを使用してmongodbのコレクションを更新しません

このコレクションは、mongoimportコマンドの助けを借りてCSVファイルをインポートすることによって形成されます。私は次の文書を持っていると考えてください。

{ 
"_id" : ObjectId("599c8da6b18e3117b09ea299"), 
"MetaKey" : "lastWPSyncedStatus", 
"MetaValue" : "Running" 

}ここで

metakeyながlastWPSyncedStatusであり、その対応する値は、実行中に起こっています。

私がここで行うべきことは、 "/ test/client"エンドポイントがヒットしたときに、lastWPSyncedStatusをSTOPに更新したいということです。 URLはPUT HTTPメソッドで送信され、更新されます。

RosterOptions.findOneAndUpdate(
    { 
     'MetaKey' : 'lastWPSyncedStatus' 

    }, 
    { 
     $set: 
      { 
       'MetaValue': 'STOP' 
      } 
    }, 
    { 
     new: true 

    }, 
    function(err,data){ 
     if(err){ 
      res.send(err); 
     } 
     res.json(data); 
     // console.log(data); 
    } 
) 

私は「lastWPSyncedStatus」としてmetakeyなを持つ文書の「STOP」にMetaValueを更新しようとしています。私はnodejsでクエリを送信しようとしましたが、エラーは発生しませんが、mongodbは更新されません。また、私はmongooseのためのデバッグをセットアップしたときに次のクエリがmongooseに提出されます。

Mongoose: rosterOptions.findOne({ MetaKey: 'lastWPSyncedStatus' }, { new: true, fields: {} }) 

されて出力される。

{ 
"_id": "599c8da6b18e3117b09ea299", 
"MetaKey": "lastWPSyncedStatus", 
"MetaValue": "Running" 

}

私は問題がある場所を特定することはできませんよ。私はまた、更新メソッドを使用しようとしましたが、私は次の出力を取得します。

{ 
"ok": 0, 
"n": 0, 
"nModified": 0 

}

私はMongoDBの中で機能更新を()を実行しようとすると、マイドキュメントが正しく更新されています。

mongoose documentationを参照し、同様の方法で実装しようとしました。誰かが私をこの問題を通して導くことができれば嬉しいです。

+0

「RosterOptions」コレクションのMongooseスキーマを共有できますか? – ryder

+0

ねえ、@ryder問題を正しく修正しました。私はこの問題に直面したためにスキーマを適切に定義するのに間違いを犯しました。早速のご返事ありがとうございます。 –

答えて

1

投稿された質問に対する回答が見つかりました。私は、マングースが自分のコレクションを正しく識別できなかったために、スキーマを正しく定義するのに間違いを犯しました。私はスキーマを変更して問題を修正しました。答えとしてマークする。

関連する問題