firebase - 如何使用flutter查询firestore中的子集合?

标签 firebase flutter dart google-cloud-firestore

我需要查询 Firestore 和 Firestore 结构:

root-->payment-->(user IDs)--->(random doc ID)-->(data like paymentid: 1234, paid: 50)
(col)  (doc)       (col)           (doc)              (fields)

我的查询就像我需要获取 paid>0 是我的查询的所有值。

我尝试过的是?

var query = FirebaseFirestore.instance;
query.collection("root").where("paid",">",0);

但它没有返回任何数据,我知道这不是正确的格式。如何才能实现这一目标?

我可以使用 Flutter 查询这个结构吗?或者有没有更好的结构可以实现?

最佳答案

您的实际查询不会返回预期结果,因为在“root”集合下不存在包含“paid”字段的文档。然而,有一个解决方案,您可以使用 collection group query但前提是您的子集合具有相同名称。由于子集合的名称是实际的用户 ID,因此该解决方案不适用。所以你只能做的是创建一个指向单个用户的引用:

root-->payment-->(user IDs)

并执行以下查询:

var query = FirebaseFirestore.instance
     .collection("root").document("payment")
     .collection(userId).where("paid", ">" ,0);

但是这个查询只会返回对应于单个用户的文档。

Is there any better structure to implement?

是的,有。请检查以下可能的结构:

Firestore-root
  |
  --- users (collection)
       |
       --- $uid (document)
            |
            --- payments (collection)
                 |
                 --- paymentid: 1234
                 |
                 --- paid: 50

这样就可以进行集合组查询,获取“paid”字段值大于0的所有文档:

var db = FirebaseFirestore.instance;
var finalQuery = db.collectionGroup("payments").where("paid", ">", 0);

关于firebase - 如何使用flutter查询firestore中的子集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69450118/

相关文章:

firebase - 在 Firebase 静态托管上托管 Docker 应用程序

Flutter:构建运行程序引发预编译错误

Flutter:如何在不使用 tabbarview 的情况下创建带导航的 tabbar?

android - 带有很多选项的复选框

javascript - 获取错误 : `Every document read in a transaction must also be written` in Firebase

java - 空指针异常 : Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference

javascript - create react app 的 firebase 部署在源选项卡中公开了所有 js 代码?

android - 找不到脚手架小部件 : Getting exception while opening Bottom Dialog sheet

flutter - Dart Set<E> 如何比较项目?

flutter - "Not found: ' Dart :js ' export ' dart:js ' show allowInterop, allowInteropCaptureThis" error when running tests