Meteor中测验应用程序的集合架构

时间:2016-01-18 03:58:40

标签: mongodb meteor collections schema

我正在Meteor中创建一个测验应用程序。

问题的架构可以是什么样的?我正在考虑做像

这样的事情
const QuestionSchema = new SimpleSchema({
  text: {
    type: String,
  },
  correctAnswers: {
    type: [Object],
  },
  'correctAnswers.$.text': {
    type: String,
  },
  wrongAnswers: {
    type: [Object],
  },
  'wrongAnswers.$.text': {
    type: String,
  },
});

但它真的很聪明吗?如何保存用户选择的答案?

2 个答案:

答案 0 :(得分:0)

您需要为答案定义单独的架构。

var QuestionSchema = new SimpleSchema({
  text: {
    type: String
  },
  answers: [{
    type: SimpleSchema.Types.ObjectId,
    ref: 'AnswerSchema'
  }]
});

var AnswerSchema = new SimpleSchema({
  text: {
    type: String
  },
  correct: {
    type: Boolean
  },
  question: {
    type: SimpleSchema.Types.ObjectId,
    ref: 'QuestionSchema'
  }
});

如果您需要跟踪用户选择的答案,则必须将其存储在用户实例中:

var UserSchema = new SimpleSchema({
  // Define other attributes here.
  answers: [{
    type: SimpleSchema.Types.ObjectId,
    ref: 'AnswerSchema'
  }]
});

答案 1 :(得分:0)

正如@gnerkus建议每个答案都有一个correct布尔值更简单,但每个答案也需要一个_id,以便您引用它,例如用户选择哪些答案?

const AnswerSchema = new SimpleSchema({
  _id: { type: String },
  text: { type: String },
  correct: { type: Boolean }
});

const QuestionSchema = new SimpleSchema({
  text: { type: String },
  answers: { type: [AnswerSchema] }
});