Задать вопрос
@Annalana

Почему не сохраняется объект коллекции после изменения?

Всем добрый день!
Пытаюсь сохранить (с изменением) объект коллекции. Почему-то объект остается в предыдущем виде. Похожий код в другой функции работает, метод .save срабатывает внутри findOne.
Сперва думала про асинхронность, но прямо перед сохранением, в строке console.log(result.orderReplies); - вывод абсолютно верный, нужный, с изменениями. Сохранение выдает "Успех".
Понимаю, что где-то туплю, но не могу понять, где, перепроверила все уже не раз.
Полагагаю, что к коду в целом будет немало замечаний, с радостью выслушаю и их.
Большое спасибо!

function send_message(value, req, res){
  let messagereply = req.body.reply;
  let newmessage = {messageUser: value, messageText: req.body.messageText, messageDate: new Date()};
  MODELS.OrderModel.findOne({orderID: req.body.orderID}, function(error, result){
    if (error) {
      res.send("Ошибка базы данных. Попробуйте снова или обратитесь к Администрации")
    }
    result.orderReplies.forEach((item, index, array) => {
      if (item.replyUser == messagereply) {
        let b = item.replyMessages;
        b.push(newmessage);
        item.replyMessages = b;
        console.log(item)
      }
    })
    console.log(result.orderReplies);
    result.save(function(err) {
      err ? console.log(err) : console.log("Успех")
    });
    res.redirect("/my_orders")
  })
};
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@StockholmSyndrome
нужно использовать markModified, так как вы изменяете вложенный объект
result.markModified('orderReplies');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы