Обновить только измененные поля в Mongoose - PullRequest
0 голосов
/ 31 января 2019

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

А это модель Mongoose:

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);

1 Ответ

0 голосов
/ 31 января 2019

у вас есть два вложенных массива, в то время как вы проверяете / определяете один массив

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

что-то подобное при вашем условии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...