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

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

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

发布于 2021-08-23 07:10:38
如果每个用户最多有2剂,您可以简单地将数据作为地图存储在用户的文档中。
{
firstName: "name",
...otherFields,
doses: {
1: {
...dose1Info
},
2: {
...dose2Info
}
}
}然后,您可以使用dot notation使用这些嵌套字段进行查询,如下所示:
const query = colRef.where("doses.1.type", "==", "AstraZeneca")此查询将返回第一个of为AstraZeneca的用户的文档。同样,您可以根据其他剂量信息字段进行查询。
发布于 2021-08-23 09:58:44
虽然@Dharmaraj answer将会起作用,但您也可以考虑如下所示的替代解决方案:
Firestore-root
|
--- users (collection)
|
--- $uid (document)
|
--- vaccinType: "AstraZeneca"
|
--- doseOne: true
|
--- doseTwo: true要查找所有接种了"AstraZeneca“疫苗的用户,可以使用以下查询:
const query = usersRef.where("vaccinType", "==", "AstraZeneca")要查找所有接种了"AstraZeneca“疫苗并获得第一剂疫苗的用户,只需使用:
const query = usersRef.where("vaccinType", "==", "AstraZeneca")
.where("doseOne", "==", true)要查找所有接种了"AstraZeneca“并获得第一剂和第二剂疫苗的用户,请执行以下操作:
const query = usersRef.where("vaccinType", "==", "AstraZeneca")
.where("doseOne", "==", true)
.where("doseTwo", "==", true)如果需要剂量等额外数据,可以为其创建两个单独的字段。
https://stackoverflow.com/questions/68888078
复制相似问题