簡體   English   中英

如何在Firestore中存儲文檔的用戶狀態? [等候接聽]

[英]How can I store User Presence for Document in Firestore? [on hold]

假設我有一個名為posts的集合,我正在存儲文章的文檔,並且我想存儲訪問過多少用戶來發布。 即我想將從身份驗證獲得的UID存儲在文檔的visited字段中。

文件就像

- title
- body
- timestamp
- visited [
    {
        UID1: true,
        UID2: true,
        UIDN: true
    }
]

因此,它存儲訪問場的地圖。 我有應用程序,如果訪問者不包含UID,我想將其顯示為粗體,如果用戶單擊帖子,那么我想在訪問者地圖中插入其UID,並且當訪問者地圖中提供UID時,它將僅顯示為普通帖子。 但是,讀取完成后,它可能會超過1MB的文檔大小。 然后,加載該文檔的速度也會降低。 我該如何避免呢? 請建議我一個好的技術來實現這一目標。

謝謝!

Firestore每次讀取都會向您收費,因此隨着訪問數組的大小增加,讀取文檔的物理成本不會增加。 雖然有大小限制。

我在當前解決方案中看到的問題是訪問數組-它是無限的。 這可能會導致大量數據通過網絡傳入。

聽起來您正在構建此文件是為了服務於單個用戶在帖子中滾動。 如果是這樣,要求他們通過網絡閱讀每個帖子上的其他UID並沒有什么意義。 這也意味着您可以達到Firestore文件大小的1MB上限。

我為您提供一些建議。

選項1(訪問的數組集合/子集合)

如果您認為訪問數組不會變得很大,則可能要使用此選項。 您可以將訪問的postIds存儲在用戶的子集合中。 這聽起來對您的用例有意義,因為您要列出供單個用戶查看的帖子。

但是,最終您仍然會遇到1MB的限制。 如果您認為用戶在使用該應用的整個過程中都會看到大量帖子,請選擇選項2。

選項2(將uid到postId的映射存儲在單獨的集合中)

如果您認為用戶可以看到很多,那么很多帖子都考慮將UID到PostID的映射存儲在單獨的集合中。 每個文檔都很小,僅包含一個uid / postId。 這意味着您需要執行兩次讀取操作:一次讀取帖子,另一次確定用戶是否看過帖子。 但是,此解決方案沒有選項1的爭用/大小限制。

暫無
暫無

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

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