Можно ли разделить вложенные вызовы заполнения разными методами?
Предположим, у меня есть следующие схемы:
const QuestionSchema = new mongoose.Schema({
number: String,
question: { type: String, required: true },
submitter: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});
const QuizSchema = new mongoose.Schema({
name: { type: String, required: true },
questions: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Question' }]
});
Для конкретной викторины я знаю, что если я захочу заполнить вопросы, включая их авторов, я бы сделал это:
quiz.populate({
path: 'questions',
model: mongoose.model('Question'),
options: {
sort: { number: 1 }
},
populate: {
path: 'questions.submitter',
model: mongoose.model('User')
}
}).exec(cb)
Теперь можно отделить populate
звонки внутри разных методов?
Например, я хочу сделать что-то вроде
QuizSchema.methods.withQuestions = function () {
return this.populate({
path: 'questions',
model: this.model('Question'),
options: {
sort: { number: 1 }
}
});
};
QuizSchema.methods.withSubmitter = function () {
return this.populate({
path: 'questions.submitter',
model: this.model('User')
});
};
для того, чтобы сделать
quiz.withQuestions().withSubmitter().execPopulate().then(cb)
К сожалению, когда я пытаюсь сделать это таким образом, submitter
не заселяется.