Удаление реляционных данных в MongoDB - Удаление определенного элемента из массива - PullRequest
0 голосов
/ 29 июня 2018

У меня есть коллекция пользователей и коллекция статей. Пользователь держит несколько статей в массиве. Сейчас я пытаюсь удалить статью из массива статей пользователя в MongoDB. Пока у меня есть

exports.delete = function(req, res, next) {
  const articleId = req.params.id;

  Article.findOneAndRemove({_id: articleId})
    .then((deletedArticle)=> {
      const authorId = deletedArticle.author;
      console.log("AUTHOR:"+authorId);

      User.update( { _id: authorId }, { $pull: { articles: [ _id: deletedArticle.id ] } }  )


      res.status(204).send(deletedArticle)
    })
    .catch(next);
}

this удаляет саму статью, но не ссылку на статью, сохраненную в массиве объекта User. Что я тут не так делаю?

1 Ответ

0 голосов
/ 29 июня 2018

Попробуйте изменить квадратные скобки в вашем запросе на фигурные:

User.update( { _id: authorId }, { $pull: { articles: { _id: deletedArticle.id } } } )

Это, очевидно, потребовало бы, чтобы _id в массиве статей был таким же, как коллекция статей, что зависит от того, как вы заполняете массив (у меня такое ощущение, что вы делаете эту часть правильно, но просто хотел упомянуть эту возможность до передний).

...