Mongoose .populate не работает в сочетании с .select - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь заполнить пользовательский документ только name и заполненным profile.Если я сделаю следующее:

User.find().populate("profile")

Вывод:

[  
   {  
      "securityQuestions":{  
         "isSetup":false
      },
      "videos":[  

      ],
      "events":[  

      ],
      "_id":"5c7965aeaf076938cc974610",
      "name":"Wade Aston",
      "email":"mrwadepro@gmail.com",
      "date":"2019-03-01T17:02:38.845Z",
      "__v":0,
      "profile":{  
         "_id":"5c7965afaf076938cc974612",
         "user":"5c7965aeaf076938cc974610",
         "profile_picture":"5c7965aeaf076938cc974611",
         "media_feed":[  

         ],
         "date":"2019-03-01T17:02:39.055Z",
         "__v":0
      },
      "profile_type":"DistrictAdminProfile",
   }
]

Это хорошо, но я не хочу все пользовательские поля, я просто хочу имя и заполненныепрофиль.Поэтому, если я сделаю это:

User.find({}, "name profile").populate("profile")

Вывод:

[  
   {  
      "_id":"5c7965aeaf076938cc974610",
      "name":"Luke",
      "profile":"5c7965afaf076938cc974612"
   }
]

По какой-то причине выбор заставляет заполнение больше не работать.Я попытался реализовать тот же синтаксис из этого поста Аналогичный вопрос , но я получил тот же результат.Так странно для меня!Заранее спасибо =]

1 Ответ

0 голосов
/ 25 марта 2019

Вы можете использовать select {name: true} только выберет имя поля

User.find().select({name: true}).populate("profile")

также, если вы хотите выбрать конкретное поле из профиля, вы также можете выбрать там

User.find().select(name: true).populate('profile', { __v: false })

это не будет отображать __V поле из профиля.

...