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を参照し、同様の方法で実装しようとしました。誰かが私をこの問題を通して導くことができれば嬉しいです。
「RosterOptions」コレクションのMongooseスキーマを共有できますか? – ryder
ねえ、@ryder問題を正しく修正しました。私はこの問題に直面したためにスキーマを適切に定義するのに間違いを犯しました。早速のご返事ありがとうございます。 –