Mongoose - 保存文档 Object.assign

Max*_*s.c 4 javascript database mongoose mongodb node.js

我有一个猫鼬文档,我想用另一个对象更新它的许多字段。就像是

Model.findById(_id, function (err, doc){
    var updateData = {...data}

    // i do not want to do 
    doc.foo = data.foo;
    doc.bar = data.bar;

    // i need something like
    doc.save(updateData)
    // or
    doc.update(updateData)
    // or
    doc = {...doc, ...updateData}
    doc.save();

});
Run Code Online (Sandbox Code Playgroud)

updateData 是一个包含我需要在文档中更新的所有数据的对象。

没有找到任何相关的文档,最接近的是找到并更新...

Ian*_*Ian 7

假设您的data对象具有您要在文档上更新的所有键,为什么不尝试使用Object.assign问题标题中提到的方法:

Object.assign(doc, data);
doc.save(callback); // save is async
Run Code Online (Sandbox Code Playgroud)

或者你可以.findByIAndUpdate()像这样使用 Mongo :

Model.findByIdAndUpdate(id, { $set: data }, callback)
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,您都可以避免手动设置要更新的每个属性。

  • 但恐怕`Object.assign` 可能会覆盖猫鼬对象的setter/getter 或任何重要属性。这会发生吗? (5认同)