Можно ли разделить вложенные вызовы заполнения разными методами?

Предположим, у меня есть следующие схемы:

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 не заселяется.

0 ответов

Другие вопросы по тегам