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);
}
});
答案 0 :(得分:29)
您多次使用$set
运算符。 $set
的正确语法是:
{ $set: { <field1>: <value1>, ... } }
您需要更改更新参数,如下所示:
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);
}
});