我正在开发一款应用程序,帮助用户在附近的药店搜索他们想要的药物,然后显示有库存药物的药店列表和价格。
我来自SQL背景,一直在艰难地决定如何构建Firestore数据库以进行更好的查询,我认为通常你会浏览药店及其数据库的列表,但有没有一种方法可以让所有药品都有一个数据库,其中可能有一个字段,其中包含Firestore中有库存的药店的主键?
发布于 2021-09-21 06:48:27
有两种方法可以解决这个问题。第一种方法是在每个药房下创建一个子集合,以保存所有可用药物:
Firestore-root
|
--- pharmacies (collection)
|
--- $pharmacyId (document)
|
--- drugs (sub-collection)
|
--- $drugId
|
--- name: "Aspirin"
|
--- inStock: true例如,为了让所有有阿司匹林库存的药店都有库存,就需要一台collection group query。在Android中,查询应如下所示:
db.collectionGroup("drugs").whereEqualTo("name", "Aspirin").whereEqualTo("inStock", "true");第二个选择是创建一个顶级的药物集合:
Firestore-root
|
--- drugs (collection)
|
--- $drugId (document)
|
--- name: "Aspirin"
|
--- inStock: true
|
--- pharmacyId: $pharmacyId并创建一个简单的查询,如下所示:
db.collection("drugs").whereEqualTo("name", "Aspirin").whereEqualTo("inStock", "true");因此,您可以根据您的应用程序的使用情况选择工作或其中之一。
https://stackoverflow.com/questions/69264364
复制相似问题