因此,我正在制作一个“测验”系统,其中存储,请求和播放测验。测验可以有文字问题,(简短答案)或多项选择题。使用猫鼬,我想将它们都存储在更大的“测验”模式中。
我尝试过类似的事情:
const QuizSchema=new mongoose.Schema({
id: String,
inviteCode: String,
questions: [QuestionSchema]
});
QuestionSchema有一些区分项(MultipleChoiceQuestion和TextQuestion作为“子模型”。我明白了为什么这不起作用-QuizSchema不了解TextQuestion和仅MultipleChoiceQuestion的QuestionSchema。解决此问题的方法是创建模式中的两个字段(multipleChoiceQuestions和textQuestions),但是我想知道是否有某种方法可以类似于我目前的方法进行操作,谢谢!到目前为止,这是我的代码:
const mongoose=require("mongoose");
const QuestionSchema=new mongoose.Schema({
question: String
});
const MultipleChoiceQuestionSchema=new mongoose.Schema({
options: [String],
answer: Number
});
const TextQuestionSchema=new mongoose.Schema({
answer: String
});
const QuizSchema=new mongoose.Schema({
id: String,
inviteCode: String,
questions: [QuestionSchema]
});
const Question=mongoose.model("Question", QuestionSchema);
const MultipleChoiceQuestion=Question.discriminator('MultipleChoiceQuestion', MultipleChoiceQuestionSchema);
const TextQuestion=Question.discriminator('TextQuestion',TextQuestionSchema);
const Quiz=mongoose.model("Quiz", QuizSchema);