首页 > 解决方案 > 仅更新 Mongoose 中更改的字段

问题描述

我正在尝试使用 ExpressJS 和 Mongoose 更新子文档。但只有更改的字段。但不知何故,它更新了所有必要的字段,也更新了不需要更改的字段。

这是 ExpressJS 中的更新函数:

postController.updateMessage = function(req, res, item) {
  var id = req.body.id;
  var saveData = {
    title: req.body.title,
    text: req.body.text,
    title_double: req.body.title_double,
    text_double: req.body.text_double
  };
  item.findOneAndUpdate({'subitem.messages._id': id}, {$set:{'subitem.$.messages': saveData}}, {upsert: true, new: true},(error, result) => {
    console.log(result);
    console.log(error);
  });
};

这是猫鼬模型:

var submessages = mongoose.Schema({
  date: String,
  type: String,
  title: String,
  text: String,
  title_double: String,
  text_double: String
});

var subitems = new mongoose.Schema({
  title: String,
  messages: [submessages]
});

var menuItems = new mongoose.Schema({
  title : String,
  subitem: [subitems]
}, {collection: 'menu_items'});

module.exports = mongoose.model("menu_items", menuItems);

标签: expressmongoose

解决方案


你有两个嵌套数组,而你在一个数组上检查/条件

{$set:{'subitem.$.messages.$': saveData}}

在你的情况下类似的事情


推荐阅读