首页 > 解决方案 > Flutter中的Firebase查询不返回结果

问题描述

我的颤振应用程序中有 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”将警报与特定患者相关联。第一个查询返回用户应该查看的所有警报。第二个查询仅返回特定患者的警报。

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


您需要在 Firebase 中为这两个查询创建索引。


推荐阅读