Задать вопрос
iGarett
@iGarett
Изобретатель велосипедов

Как обновить массив вложенных документов в MongoDB?

Подскажите пожалуйста, как правильно выполнить запрос, чтобы обновились все поля isDeleted в массиве image и поле isDeleted у Category.
MongoDB + Mongoose

Category:
{
    "_id": "5785c3e2b40e6ba6a908775e",
    "category_title": "Светлое фентези",
    "category_image_url": "category_2342734.png",
    "design_url": "desing_2.png",
    "__v": 3,

    "image": [
      {
        "_id": "5786042e4854e51ef0b8106c",
        "image_title":"Лесной дракон"
        "image_url": "image.png",
        "isDeleted": false
      },
      {
        "_id": "578600983502e51ef0b810cd",
        "image_title":"Горный дракон",
        "image_url": "image.png",
        "isDeleted": false
      },
      {
        "_id": "20934029580294df1230a89",
        "image_title":"Золотой дракон",
        "image_url": "image.png",
        "isDeleted": false
      }
    ],

    "isDeleted": true
  },


function deleteCategory(req, res, next) {
    model.CategoryModel.findByIdAndUpdate(req.params.id, { isDeleted: true }, function(err, category) {
        if (err) return next(err);
        res.json({ message: "Категория успешно удалена" });
    });
}
  • Вопрос задан
  • 659 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
function deleteCategory(req, res, next) {
    model.CategoryModel.findByIdAndUpdate(req.params.id, { isDeleted: true }, function(err, category) {
        if (err) return next(err);

        category.image.forEach(item => {
          item.isDeleted = true
        })

        category.isDeleted = true/false // что вам тут нужно

        category.markModified('image') //http://mongoosejs.com/docs/faq.html

        model.CategoryModel.save((err, updatedItem) => {
          if (err) {
            return res.status(400).json({ message: err.message })
          } else {
            return res.json({ message: "Категория успешно удалена" })
          }
        })
    });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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