Demigodd
@Demigodd

Как во время запроса проверить есть ли id в массиве?

К примеру есть модель Room, Message и User.

Schema Message = {
  title: { type: Schema.Types.String, require: true },
  room: { type: Schema.Types.ObjectId, ref: "User" },
  user: { type: Schema.Types.ObjectId, ref: "User" },
  hideForUsers: [{ type: Schema.Types.ObjectId, ref: "User" }],
}


MessageModel.find({ room: roomId});

Тут нахожу все сообщения по Id комнаты.

Во время запроса у меня есть UserId, как проверить есть ли этот UserId в массиве hideForUsers у Message и если он существует то исключить этот документ для конечного результата.

Не знаю вообще правильно ли делаю. Нужен функционал удаление сообщений из комнаты с возможностью удалить свое сообщение для самого себя или для всех юзеров в комнате.

Если выбрал для самого себя то хочу добавить свой UserId в массив hideForUsers, и при запросе определить показать ли это сообщение для меня или нет.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
не это?

MessageModel.find({ 
  room: roomId, 
  hideForUsers: { $nin: [ UserId ] }
})


чтобы обеспечить уникальность в массиве есть $addToSet
https://docs.mongodb.com/manual/reference/operator...

функционал удаление сообщений из комнаты с возможностью удалить свое сообщение для самого себя или для всех юзеров в комнате

$pull с условиями
https://docs.mongodb.com/manual/reference/operator...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы