我有以下架构,我不知道如何在Firestore中对其进行建模。
我将有客户和发票。客户“有”发票。我需要能够执行这两个查询:
对此进行建模的正确方法是什么?第一个查询通过拥有一组客户来满足其发票的子集来满足。但是第二个是通过收集所有发票来满足的吗?
感谢任何有经验的帮助
谢谢
答案 0 :(得分:4)
我还有另一条建议,涉及您创建两个顶级集合,如下所示:
Firestore-root
|
--- users (collection)
| |
| --- userId (documents)
| |
| --- //user details
|
--- invoices (collection)
|
--- invoiceId (documents)
|
--- yourBooleanProperty: true
|
--- userId: true
正如您所看到的,实现此目标的最简单方法是使用一个名为invoices
的集合,该集合可以将数据库中的所有发票保存为文档。由于单个发票只能属于单个用户,因此您可以将userId
作为属性。要获取与特定用户对应的所有发票,建议您使用以下查询:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
Query query = rootRef.collection("invoices").whereEqualTo(userId, true);
如果您想立即将所有发票的布尔属性从true
更改为false
,只需使用以下查询:
Query query = rootRef.collection("invoices").whereEqualTo(yourBooleanProperty, true);
答案 1 :(得分:1)