如何在中央 collection 中为每个用户提供一份文件副本

How to give each user a copy of documents in a central collection

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

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

如何让每个用户访问他们自己的 "copy" 选择题?

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

有没有一种方法可以有一个 collection 来容纳考试,然后每个用户都可以访问他们自己的 "copy" 考试记录他们的答案等?

谢谢

一种方法是将您的数据库设置为有一个考试集合,然后每个用户的答案可以存储在一个单独的集合中,包括他们的答案和考试的参考 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 集合设置可以让您选择为每个用户存储多个考试的答案。存储他们给出的答案是否正确可以让您更轻松地显示他们每次考试的分数以及他们有多少正确答案。