3 回答
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
有兩種情況
您應(yīng)用中的用戶只有少數(shù)關(guān)注者。
您應(yīng)用中的用戶擁有大量關(guān)注者。如果我們要將整個(gè)關(guān)注者存儲(chǔ)在Firestore中的單個(gè)文檔中的單個(gè)數(shù)組中。然后它將達(dá)到每個(gè)文檔1 MiB的存儲(chǔ)限制。
在第一種情況下,每個(gè)用戶都必須保留一個(gè)文檔,該文檔將關(guān)注者列表存儲(chǔ)在單個(gè)數(shù)組中的單個(gè)文檔中。通過使用arrayUnion()和arrayRemove(),可以有效地管理關(guān)注者列表。而且,當(dāng)您要在時(shí)間軸中發(fā)布內(nèi)容時(shí),必須在發(fā)布文檔中添加關(guān)注者列表。
并使用下面給出的查詢來獲取帖子
postCollectionRef.whereArrayContains("followers", userUid).orderBy("date");
在第二種情況下,您只需要根據(jù)關(guān)注者數(shù)組的大小或數(shù)量來中斷用戶關(guān)注文檔。在將數(shù)組的大小達(dá)到固定大小后,下一個(gè)關(guān)注者的ID必須添加到下一個(gè)文檔中。并且第一個(gè)文檔必須保留字段“ hasNext”,該字段存儲(chǔ)布爾值。添加新帖子時(shí),您必須復(fù)制帖子文檔,并且每個(gè)文檔都包含較早中斷的關(guān)注者列表。我們可以進(jìn)行與上面給出的相同的查詢來獲取文檔。
添加回答
舉報(bào)
