我可以在另一个内部使用“抽象”模式吗?

时间:2019-08-08 01:58:46

标签: javascript node.js mongoose schema

因此,我正在制作一个“测验”系统,其中存储,请求和播放测验。测验可以有文字问题,(简短答案)或多项选择题。使用猫鼬,我想将它们都存储在更大的“测验”模式中。

我尝试过类似的事情:

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);

0 个答案:

没有答案