我想做與 Firestore 相關的雙重過濾。我有一個城市選擇按鈕,第二個是選擇產品類別的 ListView。
我的類別過濾效果很好,但我不知道如何為其添加更多城市過濾。
]( https://i.stack.imgur.com/68SIS.png )
我試著寫這樣的東西
stocks.where('city', arrayContains: 'Chicago').where('tags', arrayContains: 'All');
但這是錯誤的。我將不勝感激任何答案。
uj5u.com熱心網友回復:
以下代碼行:
stocks.where('city', arrayContains: 'Chicago').where('tags', arrayContains: 'All');
將不起作用,因為有一個查詢限制說:
每個查詢最多可以使用一個陣列包含子句。您不能將 array-contains 與 array-contains-any 結合使用。
因此,您只能arrayContains在查詢中使用一個。
為了解決這個問題,您應該考慮使用映射,而不是陣列,在這種情況下,以下資料庫模式可以解決問題:
Firestore-root
|
--- stocks
|
--- $stockId
|
--- cities
| |
| --- "Chicago": true
|
--- tags
|
--- "All": true
然后像下面這樣的查詢將完全正常作業:
stocks.whereEqualTo("cities.Chicago", true).whereEqualTo("tags.All", true);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/523524.html
標籤:Google Cloud Collective 扑火力基地镖谷歌云火库
