第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Firestore-如何構(gòu)建Feed和關(guān)注系統(tǒng)

Firestore-如何構(gòu)建Feed和關(guān)注系統(tǒng)

Cats萌萌 2019-12-21 13:16:10
我將Firebase實時數(shù)據(jù)庫用于我的測試社交網(wǎng)絡(luò)應(yīng)用程序,您可以在其中跟蹤和接收所關(guān)注的人的信息。傳統(tǒng)的社交網(wǎng)絡(luò)。我的數(shù)據(jù)庫結(jié)構(gòu)如下:Users--USER_ID_1----name----email--USER_ID_2----name----emailPosts--POST_ID_1----image----userid----date--POST_ID_2----image----userid----dateTimeline--User_ID_1----POST_ID_2------date----POST_ID_1------date我還有另一個節(jié)點“ Content”,其中僅包含所有用戶帖子的ID。因此,如果“ A”跟在“ B”之后,那么B的所有帖子ID都會添加到A的時間軸中。如果B發(fā)布了一些內(nèi)容,那么它也會被添加到其所有關(guān)注者的時間表中。現(xiàn)在這是我的實時數(shù)據(jù)庫解決方案,但顯然存在一些可伸縮性問題如果某人擁有10,000個關(guān)注者,而在10,000個關(guān)注者的時間軸中添加了新帖子。如果某人發(fā)布的帖子數(shù)量超過每個新關(guān)注者在其時間軸中收到的所有帖子。這些是一些問題?,F(xiàn)在,我正在考慮將整個事情轉(zhuǎn)移到Firestore上,因為它被稱為“可伸縮”。因此,我應(yīng)該如何構(gòu)建數(shù)據(jù)庫的結(jié)構(gòu),以便可以在Firestore中消除我在實時數(shù)據(jù)庫中遇到的問題。
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊

有兩種情況


您應(yīng)用中的用戶只有少數(shù)關(guān)注者。


您應(yīng)用中的用戶擁有大量關(guān)注者。如果我們要將整個關(guān)注者存儲在Firestore中的單個文檔中的單個數(shù)組中。然后它將達(dá)到每個文檔1 MiB的存儲限制。


在第一種情況下,每個用戶都必須保留一個文檔,該文檔將關(guān)注者列表存儲在單個數(shù)組中的單個文檔中。通過使用arrayUnion()和arrayRemove(),可以有效地管理關(guān)注者列表。而且,當(dāng)您要在時間軸中發(fā)布內(nèi)容時,必須在發(fā)布文檔中添加關(guān)注者列表。


并使用下面給出的查詢來獲取帖子


postCollectionRef.whereArrayContains("followers", userUid).orderBy("date");

在第二種情況下,您只需要根據(jù)關(guān)注者數(shù)組的大小或數(shù)量來中斷用戶關(guān)注文檔。在將數(shù)組的大小達(dá)到固定大小后,下一個關(guān)注者的ID必須添加到下一個文檔中。并且第一個文檔必須保留字段“ hasNext”,該字段存儲布爾值。添加新帖子時,您必須復(fù)制帖子文檔,并且每個文檔都包含較早中斷的關(guān)注者列表。我們可以進(jìn)行與上面給出的相同的查詢來獲取文檔。


查看完整回答
反對 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 476 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號