簡體   English   中英

如何使用 flutter 查詢 firestore 中的子集合?

[英]how to query the subcollections in firestore using flutter?

我需要查詢 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”字段的文檔。 但是會有一個解決方案,您可以在其中使用集合組查詢,但前提是您的子集合具有相同的名稱。 由於子集合的名稱是實際的用戶 ID,因此此解決方案不適用。 所以你只能做的是創建一個指向單個用戶的引用:

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

並執行以下查詢:

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

但是這個查詢只會返回對應於單個用戶的文檔。

有沒有更好的結構來實現?

就在這里。 請檢查以下可能的結構:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM