@AndrewRusinas

Как работает populate в mongoose?

Создаю простой чятик.
Есть три модели: Users, Dialogs, Messages.

По аналогии с populate в Waterline, думал построить следующее:

В базе данных хранятся диалоги следующего вида:
creator: '1';
members: ['1', '2']

Цифры - это ID пользователей из Users.

При поиске по базе диалогов хотелось по этим ID сразу подгружать нужные данные по пользователям, поэтому модель диалогов сделал так, как указано в документации:
var DialogSchema = new Schema({
  creator: String,
  members: [{type: Schema.Types.ObjectId, ref: 'User'}]
}

Но, судя по всему, я что-то упускаю. Я делаю поиск по members, Dialog.find({members: req.params.id}), что до попытки применить populate возвращало мне нужные диалоги. Теперь возвращается ошибка 'Cast to ObjectId failed for value "2" at path "members" for model "Dialog"'. Значение "2" - как раз тот самый ID пользователя.
  • Вопрос задан
  • 1152 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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