将数组添加到子文档Mongoose

时间:2019-01-21 14:06:43

标签: javascript express mongoose

我试图使用Express将数组添加到Mongoose中的现有子文档中,但是我似乎无法弄清楚

这是我的猫鼬模型:

var subitems = new mongoose.Schema({
  _id: ObjectId,
  title: String,
  messages: Array
});

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

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

我正在使用子文档中的ID更新“子项目”中的特定项目 这是Express Update:

postController.postArticles = function(req, res,item) {
  var id = req.body.id;
  var saveData = {
    title: req.body.title,
    text: req.body.text
  };
  item.update({_id: id}, {$push:{messages: saveData}},(err, result) => {
  });
};

它没有在数据库中添加任何东西,有人有想法吗?

1 个答案:

答案 0 :(得分:0)

使用猫鼬,您必须更新整个对象。因此,首先要使用find或findOne获得项,然后必须使用push将元素添加到数组中,最后调用猫鼬对象的.save()方法。 像这样:

postController.postArticles = function(req, res,item) {
  var id = req.body.id;
  item.findOne({_id: id}, function(error, myItem) {
    var saveData = {
      title: req.body.title,
      text: req.body.text
    };
    myItem.messages.push(saveData);
    myItem.save();
  });
};