首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该将其保存在同一个用户集合中还是创建另一个集合?

我应该将其保存在同一个用户集合中还是创建另一个集合?
EN

Stack Overflow用户
提问于 2021-08-23 06:23:05
回答 2查看 46关注 0票数 0

我用reactjs和firebase firestore创建这个项目,用户可以在那里注册和登录到这个网站。登录后,用户将有一个存储其userID的二维码。在管理员端,管理员可以扫描他们的二维码,然后检索用户的userID。然后,管理员可以看到用户的信息,例如他们的姓名、生日、地址和电话号码。还可以输入用户的疫苗是什么,以及管理疫苗的人,等等,并提交它。

当管理员提交用户输入的疫苗接种状态时,我不确定是否应该创建另一个集合,还是应该仍然将其保存在用户集合中。

这是用户集合:

我之所以这样问,是因为我将为那些至少接种了1剂或完全接种疫苗的人创建每个疫苗的月度图表。如果我只是通过创建另一个集合将其保存在firestore中,或者只是将其保存在用户集合中,这是否可以?

月度图类似于下面的图:

这是管理员可以输入用户的疫苗接种信息的表单。管理员将输入用户接种的疫苗类型,无论哪种方式,人们都不能选择他们将接种的疫苗类型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-23 07:10:38

如果每个用户最多有2剂,您可以简单地将数据作为地图存储在用户的文档中。

代码语言:javascript
复制
{
  firstName: "name",
  ...otherFields,
  doses: {
    1: {
      ...dose1Info
    },
    2: {
      ...dose2Info
    }
  }
}

然后,您可以使用dot notation使用这些嵌套字段进行查询,如下所示:

代码语言:javascript
复制
const query = colRef.where("doses.1.type", "==", "AstraZeneca")

此查询将返回第一个of为AstraZeneca的用户的文档。同样,您可以根据其他剂量信息字段进行查询。

票数 1
EN

Stack Overflow用户

发布于 2021-08-23 09:58:44

虽然@Dharmaraj answer将会起作用,但您也可以考虑如下所示的替代解决方案:

代码语言:javascript
复制
Firestore-root
  |
  --- users (collection)
       |
       --- $uid (document)
            |
            --- vaccinType: "AstraZeneca"
            |
            --- doseOne: true
            |
            --- doseTwo: true

要查找所有接种了"AstraZeneca“疫苗的用户,可以使用以下查询:

代码语言:javascript
复制
const query = usersRef.where("vaccinType", "==", "AstraZeneca")

要查找所有接种了"AstraZeneca“疫苗并获得第一剂疫苗的用户,只需使用:

代码语言:javascript
复制
const query = usersRef.where("vaccinType", "==", "AstraZeneca")
                  .where("doseOne", "==", true)

要查找所有接种了"AstraZeneca“并获得第一剂和第二剂疫苗的用户,请执行以下操作:

代码语言:javascript
复制
const query = usersRef.where("vaccinType", "==", "AstraZeneca")
                  .where("doseOne", "==", true)
                  .where("doseTwo", "==", true)

如果需要剂量等额外数据,可以为其创建两个单独的字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68888078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档