Как заполнить вложенные документы, которые существуют в других вложенных объектах - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть схема storySchema с chapters -> posts, которые не являются иностранными документами, и posts -> author, которая является иностранным документом. когда я populate({ path: "chapters", populate: { path: "posts", populate: {path: "author"}}}), я возвращаюсь 'undefined'.

Я не уверен, как использовать populate с вложенными документами, которые не являются иностранными.

const storySchema = new Schema({ chapters: [{ title: String, description: String, posts: [{ author: { type: Schema.Types.ObjectId, ref: "User" }, description: String }] }], });

models.Story.findOne({ _id: req.params.story_id }).populate({ path: "chapters", populate: { path: "posts", populate: { path: "author" } } }) .then(story => {})...

Я ожидал, что документ с заполненным желаемым полем author получил вместо этого неопределенный документ.

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуйте получить доступ к подфайлам, используя точечную запись .

Story.findOne({ _id: req.params.story_id })
   .populate('chapters.posts.author")
   .then(story => {})
   .catch(err => err);
...