簡體   English   中英

在Firebase Firestore中查詢帖子的最有效方法

[英]Most Efficient Way To Query Firebase Firestore For Posts

我目前正在創建一種社交媒體應用程序,並且像任何社交媒體應用程序一樣,顯示來自朋友的某種信息幾乎至關重要。

我嘗試了多種方式向其朋友發布的用戶顯示帖子,但是速度可能很慢,我懷疑這是最有效的方法。

最初,我的數據庫結構如下:

users->(uid)-> friends(uid的數組)posts(post id的數組)其他信息...

帖子->(帖子ID)-> image_url其他信息...

使用此設置,我:1.我獲取了當前登錄的用戶uid,並在“用戶”下獲得了屬於該用戶的文檔。

  1. 然后,我得到用戶朋友列表作為數組並遍歷它們。

  2. 然后,對於每個uid,我再次查詢“用戶”,並找到屬於該用戶的文檔。

  3. 然后,如果有一個,我會在他們的“帖子”數組中獲取第一個“帖子ID”

  4. 我獲取了帖子ID,並在“帖子”集合中找到了相應的帖子並下載了它。

  5. 對每個用戶ID重復步驟3-5,直到沒有更多帖子,或者我已經下載了10個帖子。

那是我的第一種方法,但是我有幾個可以確定的問題,很可能還沒有想到。

  1. 在第2步和第4步中,由於firestore不允許您下載數組中的某個索引,因此我將下載整個數組。 這會減慢處理過程,如果在

  2. 假設用戶向下滾動以刷新新帖子,那么將很難加載更多帖子,因為即使我開始下載我離開的地方,也可能會在那個時候添加另一個帖子,從而引發整個系統的混亂。

我還嘗試僅將集合后的帖子附加到每個用戶的帖子中進行嘗試。

還有其他想法嗎?

如果我正確地理解了您的問題,那么您正在嘗試促進userposts之間的joins (即,您希望user可以按時間或相關性看到所有posts )。 我建議創建一個Firebase函數,當其朋友之一創建帖子時,在用戶的“提要”集合下寫一條記錄。 該記錄將包含對該帖子的Reference以及對該帖子進行排名/排序的必要信息。 然后,您可以進行兩個查詢(第一個查詢相對較快且可分頁),以方便用戶進行供稿。 如果用戶獲得了一個新朋友,則只需使用另一個Firebase函數即可從該朋友獲取一些最新的帖子(可能不是從時間開始)。

暫無
暫無

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

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