2017-05-31 117 views
0

我正在創建一個instagram風格的Feed,並試圖找出如何根據您關注的人來對帖子進行分頁。Firebase Swift分頁新聞Feed

我的數據結構如下:

posts: 
     user1: 
      post1 
      post2 
     user2: 
      post3 
      post4 
     user3: 
      post5 
      post6 
      post7 

user-following: 
     user1: 
      user2 
      user3 

所以帖子被創建後用戶組織。我也有一個當前用戶關注的人的結構。因此,我抓取當前用戶所關注的用戶的uid,然後轉到帖子部分,並獲取這些用戶的所有帖子,並且每個帖子都有一個createdAt值。

當我使用queryByChild(「createdAt」)時,它將每個用戶的數據排序,而不是絕對。 所以它排序user2的帖子,然後user3的帖子,而不是絕對的排序,因爲它拉動數據的塊。

我需要獨立於擁有新聞Feed帖子的用戶的最新總體帖子。我可以獲取快照中的所有發佈信息,但有沒有辦法對快照進行排序?我需要找到一種方法來讓數據庫對信息進行整體分類,而不是分塊,然後從該分類列表中提取最新的「x」個帖子。

否則,我必須將所有內容都放入我的程序中,然後將它排序到數組中,然後從數組中取出最近的'x'數量的帖子進行分頁。問題是,如果有1000個帖子,這是一個巨大的數據拉,將使應用程序超級慢,可能會崩潰。有什麼建議麼?

+0

Firebase文檔非常有幫助。查看[使用iOS上的數據列表](https://firebase.google.com/docs/database/ios/lists-of-data),其中指出* queryLimitedToLast:設置從結尾返回的最大項數*在這種情況下,將其設置爲15,這將返回15個'最近'的帖子。將來,請在您的問題中包含有問題的代碼以及您的Firebase結構(作爲TEXT)。您可能需要查看[如何創建一個最小化,完整和可驗證的示例](https://stackoverflow.com/help/mcve) – Jay

+0

@Dirty如果您希望Jay查看您的回覆,請使用「@Jay」評論 –

+0

@Jay感謝您的回覆。我的問題進一步深入,我必須得到用戶關注的人的帖子。因此查詢將獲取每個用戶的帖子,然後轉到下一個用戶等等,所以一旦觀察到所有數據,它就不會對帖子進行排序,而是以塊的形式進行排序。所以帖子不會完全排序,但只能由每個用戶進行排序。是否有辦法在快照中一次抓取所有數據,然後對其進行排序,然後拖動最後的15個? – Dirty

回答

0

在我看來這裏只有一個辦法是:

1)仔細檢查每個用戶,您按照

2)獲取最後X帖子

3)排序數組按日期

4)結果數組最後的X

如果你有table view

爲了使無限滾動需要存儲數組,並從它那裏得到的職位。

刷新 - 重新加載帖子數組。

我有相同的結構,我認爲這是唯一的方式,我們如何能做到這一點。

希望它是正確的,並幫助

+0

謝謝你的回覆。但它仍然不能解決問題。從每個用戶那裏獲取最後的'x'帖子並不能滿足您關注所有用戶的最新帖子的需求。假設你關注500人,你不能通過並獲取每個用戶的最後'x'帖子,因爲沒有辦法確定哪些帖子是最近的500個用戶。這個結構的分頁在firebase中不可行嗎? – Dirty

+0

@Dirty你怎麼生成ID的郵件節點?我有相同的結構,我使用childByAutoId。我在表格視圖中完成了無限滾動。有了這個alghorithm –

+0

我也使用childByAutoId。那麼你是否解決了這個問題?我不確定無限滾動是什麼,但如果你知道了這一點,請讓我知道如何去做! – Dirty