Добавить массив в поддокумент Mongoose - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь добавить массив в существующий поддокумент в 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);

Я использую идентификатор из вложенного документа для обновления определенного элемента в «подпункте». Это экспресс-обновление:

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 голосов
/ 21 января 2019

С помощью mongoose вы должны обновить весь объект.Итак, сначала вы получаете элемент с помощью find или findOne, и вам нужно добавить элемент в массив с помощью push, и, наконец, вы вызываете метод .save () объекта mongoose.Как то так:

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();
  });
};
...