0

我不认为我给了这个好标题,但我发现很难用语言表达。

我正在构建一个应用程序,其中每个用户都可以访问一些多项选择题。

如何让每个用户访问他们自己的多项选择考试“副本”?

现在我正在做的是在创建帐户时向每个用户添加我所有多项选择题的每个问题的完整副本,但这会很快变得混乱,这意味着将来更新问题或更改考试将是一场噩梦。

有没有一种方法可以有一个包含考试的集合,然后每个用户都可以访问他们自己的考试“副本”来记录他们的答案等?

谢谢

4

1 回答 1

1

一种方法是将您的数据库设置为有一个考试集合,然后每个用户的答案可以存储在一个单独的集合中,其中包含他们的答案以及考试的参考 ID 和答案所属的用户。下面是一个例子,可能更容易理解。

考试收集样本数据:

{
  examId: 001,
  examType: "multiple-choice",
  examQuestions: [
    {
      questionNumber: 01,
      questionText: "How many collections should I use?",
      questionChoices: [
        {
          choice: "five",
          correct: 0
        }, 
        {
          choice: "three",
          correct: 0
        }
        {
          choice: "one",
          correct: 0
        }
        {
          choice: "two",
          correct: 1
        }
      ]
    },
    {
      questionNumber: 02,
      questionText: "What should I call my exams collection?",
      questionChoices: [
        {
          choice: "tests",
          correct: 0
        }, 
        {
          choice: "exams",
          correct: 1
        }
        {
          choice: "icecream",
          correct: 0
        }
        {
          choice: "bob",
          correct: 0
        }
      ]
    }
  ]
}

userAnswers 收集样本数据:

{
  userId: "j23owdd9sJDO(Ee09kd",
  examId: 001,
  examAnswers: [
    {
      questionNumber: 01,
      questionAnswer: "two",
      correct: 1
    },
    {
      questionNumber: 02,
      questionAnswer: "bob",
      correct: 0
    }
  ]
}

此考试集合设置将使您可以选择在考试集合中存储多个考试并跟踪考试类型等数据,并为每个考试提供唯一的 ID,以便在您的应用程序或其他集合中引用它。它还可以使您的考试集保持清洁。

这个 userAnswers 集合设置可以让您选择为每个用户存储多个考试的答案。存储他们给出的答案是否正确可以让您更轻松地显示他们每次考试的分数以及他们有多少正确答案。

于 2016-09-23T21:59:25.123 回答