提交所有选中的单选按钮

时间:2018-02-05 02:39:09

标签: javascript angularjs node.js mongodb

我正在尝试在MEAN堆栈的帮助下制作一个测验应用程序。在尝试所有问题之后,将提交按钮以提交所有已检查的单选按钮。对于option1,它应该是1,对于option2它应该是是2.目前我的答案mongoose模型看起来像这样 -

const answerSchema = new Schema({

                              userEmail: {
                                type: String, require:true
                              },
                              testId: {
                                type: String, require:true
                              },
                              questionId: {
                                type: String, require:true
                              },
                              userAnswer: {
                                type: String
                              },
                              correctAnswer: {
                                type: String, require:true
                              },
                              timeTakenEach: {
                                type: Number,
                                default: 1
                              }  //insecs

})

我应该对猫鼬模型进行任何更改,因为在提交后我必须将useranswer与正确的答案进行比较。我觉得useranswer和correctanswer字段应该是一个数组,以便所有选中的问题选项可以存储一个另一方面,如何为所有问题一次性提交所有测试数据。我的angularjs控制器功能逻辑应该是什么样的。

2 个答案:

答案 0 :(得分:1)

实际上,您可以为角度中的所有测试问题提供一组对象。完成每个问题后,继续将对象推送到此数组。

[
  {
    questionId: 123,
    userAnswer: 1,
    ...
  },
  {
    questionId: 123,
    userAnswer: 1,
    ...
  },
];

最后,当测试完成后,将其提交给API。另一方面,保持架构的结构。不要像电子邮件那样保留冗余数据。您可以按如下方式简化此操作。

answerSchema = {
  userInfo: {
    name: 'abc',
    email: 'abc@xyz.com',
    attemptedOn: ...,
    ...
  },
  testMetaData: {
    testId: 1,
    testName: 'ABC Test',
    ...
  },
  attemptedAnswers: [{
    questionId: 1,
    attemptedAnswer: 2
  },
  ...
  ]
};

答案 1 :(得分:0)

最好不要在answerSchema中包含correctAnswer,而是将其放在单独的集合中,因为它会为每个用户在数据库中留出额外的空间

const answerSchema = new Schema({

    userEmail: {
        type: String, require: true
    },
    testId: {
        type: String, require: true
    },
    questionId: {
        type: String, require: true
    },
    userAnswer: {
        type: String
    },
    timeTakenEach: {
        type: Number,
        default: 1
    }  //insecs

});

const questionAnswer = new Schema({
    questionId: {
        type: String, require: true
    },
    correctAnswer: {
        type: String, require: true
    },
});