我正在開發小應用程式,它允許用戶根據他們在視圖中選擇的各種過濾器瀏覽專案。
但是在查看 firebase 檔案后,我意識到我嘗試創建的那種復合查詢是不可能的,因為 Firestore 只支持每個查詢一個“IN”運算子。為了解決這個問題,檔案說要使用多個單獨的查詢,然后在客戶端合并結果。
https://firebase.google.com/docs/firestore/query-data/queries#query_limitations
Cloud Firestore 對邏輯 OR 查詢提供有限的支持。in 和 array-contains-any 運算子支持單個欄位上最多 10 個相等 (==) 或 array-contains 條件的邏輯 OR。對于其他情況,請為每個 OR 條件創建單獨的查詢并在您的應用中合并查詢結果。
我可以看到這將如何正常作業,但是如果我只想向用戶顯示每頁十個結果怎么辦。我將如何實作分頁,因為我不想每次都向用戶發送大量結果?
我的第一個想法是對每個單獨的查詢進行分頁,然后合并它們,但是如果我只從資料庫中獲取一個小樣本,我不確定如何將它們與客戶端的其他查詢進行比較和合并。
任何幫助將不勝感激,因為我希望我不必離開 firestore 并在 SQL 資料庫中重新開始。
uj5u.com熱心網友回復:
假設您想在頁面上顯示 10 個結果。您需要為每個子查詢獲得 10 個結果,然后在客戶端合并結果。您將重讀相當多的資料,但不幸的是,在這樣的實作中這是不可避免的。
(首選)替代方法通常是找到一個資料模型,該模型允許您通過單個查詢實作用例。不可能一般地說如何做到這一點,但它通常涉及為 OR 條件添加一個欄位。
假設您想獲得“fieldA”為“Red”或“fieldB”為“Blue”的所有結果。通過添加欄位“fieldA_is_Red_or_fieldB_is_Blue”,您可以對該欄位執行單個查詢。在此示例中,這可能看起來非常人為設計,但在許多用例中它更合理,并且可能是使用單個查詢實作 OR 用例的好方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/365986.html
