MongoDB Удалить все документы, созданные пользователем при удалении пользователя - PullRequest
0 голосов
/ 12 июня 2018

Я работаю над MongoDB (mongoose) и NodeJS.У меня проблема.Я MAKINE RESTful API.У меня есть Модель пользователей (коллекция) и Модель комментариев (коллекция).Пользователь создает комментарии, и я связываю комментарии пользователя и пользователя с _id пользователя.Я хочу удалить все комментарии, когда пользователь удалил.Как я могу сделать это в MongoDB?Я ищу его в Google в течение 2 дней, но я не могу найти хороший источник, посмотрел на документы MongoDB Manual, но ничего не нашел.

Пожалуйста, помогите мне.Спасибо, хорошего дня ...

1 Ответ

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

MongoDB не поддерживает встроенные отношения и транзакции между коллекциями.

Чтобы удалить связанные комментарии (я полагаю, у вас есть поле userId в каждом Comment):

db.comments.remove({userId: removedUserId})

Если у вас есть коллекция идентификаторов комментариев в User, то:

db.comments.remove({id: {$in: collectionOfCommentIds}})

Mongoose поддерживает middlewares .Но обратите внимание, что

Нет ловушки запроса для remove (), только для документов.

Таким образом, вы можете определить remove ловушку для использования с user.remove().Но не для User.remove({_id: userId})

userSchema.post(`remove`, (user) => {
    Comments.remove({userId: user._id})
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...