[英]How to query documents containing array of objects in Firestore collection using whereArrayContains() filter on Android?
[英]Firestore android consecutive whereArrayContains queries not working
我有一些包含兩個 arrays 的文檔,一個用於搜索功能(關鍵字),另一個用於按服務過濾,使用單個 whereArrayContains 或 whereArrayContainsAny 完美運行。 如果我同時使用它們來獲取既具有搜索功能關鍵字又具有至少一項選定服務的文檔,它會卡在加載 state 中,並且永遠不會返回任何內容。 對於上下文,我將 jetpack compose 與 compose pager 一起用於顯示文檔的 lazyColumn。
這個作品:
FirebaseFirestore.getInstance().collection("Clubs")
.whereArrayContainsAny("services", sportsFilters)
.get()
.await()
這也有效:
FirebaseFirestore.getInstance().collection("Clubs")
.whereArrayContains("keywords", searchString.lowercase().trim())
.get()
.await()
這不起作用:
FirebaseFirestore.getInstance().collection("Clubs")
.whereArrayContains("keywords", searchString.lowercase().trim())
.whereArrayContainsAny("services", sportsFilters)
.get()
.await()
來自關於查詢限制的 Firestore 文檔:
每個查詢最多可以使用一個
array-contains
子句。 您不能將array-contains
與array-contains-any
結合使用。
因此,您嘗試執行的查詢在 Firestore API 上是不可能的。解決方法是對數據庫執行一個過濾條件,然后在您的應用程序代碼中執行另一個過濾條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.