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);
}
});
$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);
}
});