0
Я не уверен, как заполнить поле questions
в коллекции examBoard
в следующем примере (я сделал свой пример достаточно сложным, чтобы я мог правильно понять, как он работает) ,MongoDB: Как заполнить встроенную ссылку
examBoard схема:
var topicSchema = new mongoose.Schema({
name: String,
questions:[
{
type:mongoose.Schema.Types.ObjectId,
ref:"question"
}
],
});
var moduleSchema = new mongoose.Schema({
name: String,
topics: [topicSchema]
});
var examBoardSchema = new mongoose.Schema({
name: String,
modules: [moduleSchema]
});
module.exports = mongoose.model("examBoard", examBoardSchema);
вопрос схемы:
var partSchema = new mongoose.Schema({
mark: Number,
content: String
});
var questionSchema = new mongoose.Schema({
content: String,
mark:Number,
methods:[[partSchema]]
});
module.exports = mongoose.model("question", questionSchema);
Как я думал, что я должен сделать это:
examBoard.find()
.populate
({
path:"modules.topics.questions",
model:"question"
})
.exec(function(err,exam)
{
if(err)
{
console.log("Failed to populate");
}
else
{
console.log("exam[0].modules[0].topcis[0].questions\n"+exam.modules[0].topcis[0].questions);
}
});
Когда вы пишете «Экзамен», вы имеете в виду «examBoard» (поскольку это то, что вызывается при его экспорте) –
Да, это так. 'Экзамен = mongoose.model (" examBoard ", examBoardSchema);' – willie17
Спасибо, это работает. Есть ли какая-либо документация, связанная с тем, как вы это сделали, чтобы вы могли связать меня? В нижней части моего вопроса я поставил, как я изначально думал, что я должен это сделать, любая документация, объясняющая, как этот метод был неправильным, будет замечательным. –