Как я могу глубоко заполнить несколько путей в mongoosejs?

Можно ли одновременно заполнить несколько путей с помощью мангуста? Я пытаюсь сделать что-то вроде этого:

User.findById(_id)
  .populate({
    path:'friendIds',
    model:'User',
    populate: {
      path: 'reviewIds',
      model: 'Review',
      populate: [{
        path: 'userId',
        model: 'User'
      }, {
        path: 'locationId',
        model: 'Location'
      }]
    }
  })

Если у пользователя есть друзья, которые являются пользователями, которые написали обзоры, у которых есть автор (пользователь) и местоположение. Я пытаюсь глубоко заполнить всю эту информацию. Выше моя последняя попытка, и она не работает. Есть ли способ сделать это?

Просто в качестве справки, если я не хочу, чтобы было заполнено несколько путей, он отлично работает следующим образом:

User.findById(_id)
  .populate({
    path:'friendIds',
    model:'User',
    populate: {
      path: 'reviewIds',
      model: 'Review',
      populate: {
        path: 'locationId',
        model: 'Location'
      }
    }
  })

Но тогда в моих обзорах не указан Пользователь.

Подробнее о глубоком заполнении читайте в документации mongoose.


person devigner    schedule 16.02.2016    source источник


Ответы (1)


Да, работает. Я использовал это много раз. Вот пример:

Model.find()
.populate({
    path: 'replies',
    populate: [{
      path: 'user',
      select: 'displayName username'
    }, {
      path: 'replies',
      populate: {
        path: 'user',
        select: 'displayName username'
      }
    }]
}).exec(...
person tutley    schedule 16.02.2016