web-dev-qa-db-ja.com

Mongoose findOneAndUpdate複数のフィールドの更新

FindOneAndUpdateメソッドが正しく機能しません。すべてのフィールドを一度に更新しようとしていますが、最後のフィールドのみを更新(設定)しています。常に最後のフィールドのみです。誰かが私が間違っていることを教えてもらえますか、または期待される効果を得るにはどうすればよいですか?

これは私のfindOneAndUpdateコードです:

Book.findOneAndUpdate({_id:bookId},{$set:{"name": name},$set:{"genre": genre},$set:{"author": author},$set:{"similar": similar}}).exec(function(err, book){
       if(err){
           console.log(err);
           res.status(500).send(err);
       } else {
            res.status(200).send(book);
       }
});
14
pdace

$set 演算子を複数回使用しています。 $setの正しい構文は次のとおりです。

{ $set: { <field1>: <value1>, ... } }

次のようにupdate引数を変更する必要があります。

Book.findOneAndUpdate({ "_id": bookId }, { "$set": { "name": name, "genre": genre, "author": author, "similar": similar}}).exec(function(err, book){
   if(err) {
       console.log(err);
       res.status(500).send(err);
   } else {
            res.status(200).send(book);
   }
});
33
styvane