【发布时间】:2021-03-24 18:00:06
【问题描述】:
我的颤振应用中有 2 个查询引用了 firebase 中的相同信息。一个由用户的 id 过滤,另一个由患者的 id 过滤。这两个查询都有效,但只有通过 uid 过滤的查询才能与 orderby 一起使用。为什么第二个查询不起作用?
按用户 ID 过滤的查询
FirebaseFirestore.instance
.collection('alerts')
.where('access', arrayContains: FirebaseAuth.instance.currentUser.uid)
.orderBy('createdAt', descending: true)
.snapshots(),
按患者 ID 过滤的查询
FirebaseFirestore.instance
.collection('alerts')
.where('patientId', isEqualTo: patient.id)
//.orderBy('createdAt', descending: false)
.snapshots(),
我在这个查询中注释掉了 orderBy,因为它导致它不返回任何结果。如果不使用 orderBy,我会得到我想要的结果,而不是我想要的顺序。
如果警报应与该用户相关联,则警报有一个名为“访问”的字段,其中包含用户 ID。警报上的“患者 ID”将警报与特定患者相关联。 第一个查询返回用户应该查看的所有警报。 第二个查询仅返回特定患者的警报。
【问题讨论】:
-
@SimonSot 这可能会有所帮助,但我已经在此表上为 createdAt 设置了一个索引,我是否应该添加另一个索引,其中还包括患者 ID 字段?
-
是的,你也应该添加 where 。
标签: firebase flutter dart google-cloud-firestore