簡體   English   中英

Firebase 數據庫架構 - Snapchat 之類的

[英]Firebase Database Architecture - Snapchat like

我想用 Firebase 創建一個應用程序。

我有這個應用程序的兩個主要目標:

  1. 獲得朋友關系
  2. 發送圖片給朋友

在我的 Firestore 數據庫中,我有“用戶”集合,其中用戶 ID 作為文檔,ID 和 email 在字段中。 (用戶 > id > id、電子郵件)。 當用戶注冊時,我在數據庫中發送信息。

        db.collection("users").document(currentUser.uid).setData([
            "id": currentUser.uid,
            "email": currentUser.email ?? ""
        ]) { err in
            if let err = err {
                print("Error writing document: \(err)")
            } else {
                print("Document successfully written!")
            }
        }

我想如果我想處理朋友關系,我必須在文檔用戶中添加集合(用戶> id> id,email(字段)...friendsRelationship(集合)> id(用戶添加為字段))。

並將其添加到其他用戶文檔 id 用戶 (targetedUser) --> 雙向。

當某個用戶刪除另一個用戶時,我們必須從currentUser 和targetedUser 中刪除friendsRelationship 集合中的id。

在 Firebase 中是否有任何其他解決方案/更好的數據庫架構可用於朋友關系?

當好友關系完成后,我們要發送圖片給targetedUser。

我寧願做用戶> id>圖像(集合)> url,日期(字段)...或圖像> id(生成)> fromUser(id),toUserId(集合)> id?

如何查詢當前用戶收到的所有圖片? db.collection("users").document(currentUser.uid)...

這是我的 Cloud Firestore 數據庫的屏幕截圖: https://imgur.com/4bGJOoP

當 firstUser 向其他用戶發送快照時,我不知道如何管理與此的朋友關系,並像 snapshat 一樣發布。

謝謝你的建議!

我想如果我想處理朋友關系,我必須在文檔用戶中添加集合(用戶> id> id,email(字段)...friendsRelationship(集合)> id(用戶添加為字段))。

您存儲用戶數據的方式對我來說看起來不錯。

在 Firebase 中是否有任何其他解決方案/更好的數據庫架構可用於朋友關系?

關於朋友關系,還有另一種可能的解決方案,它不需要創建子集合,您可以簡單地將每個朋友 id 添加到用戶文檔的數組中。 新架構可能如下所示:

Firestore-root
   |
   --- users
        |
        --- uid
             |
             --- email: "name@email.com"
             |
             --- id: "userId"
             |
             --- friendIds: ["friendIdOne", "friendIdTwo", "friendIdThree"]

當文檔的大小未達到限制時,這才可以正常工作。 因此,在您可以將多少數據放入文檔時存在一些限制。 根據有關使用和限制的官方文檔:

文檔的最大大小:1 MiB(1,048,576 字節)

如您所見,單個文檔中的數據總量限制為 1 MiB。 當我們談論存儲文本時,您可以存儲很多東西。

如果您認為文檔的大小可能會超過該限制,那么您將朋友作為文檔存儲在單獨集合中的解決方案將解決您的問題。

並將其添加到其他用戶文檔 id 用戶 (targetedUser) --> 雙向。

要建立雙向關系,在上面的解決方案中,您應該簡單地將friendId復制到用戶的friendIds數組中,並將userId復制到朋友的friendIds數組中。

當某個用戶刪除另一個用戶時,我們必須從currentUser 和targetedUser 中刪除friendsRelationship 集合中的id。

在上面的解決方案中,您應該從friendIds數組中刪除userId,並從用戶的friendId數組中刪除friendIds

我寧願做用戶> id>圖像(集合)> url,日期(字段)...或圖像> id(生成)> fromUser(id),toUserId(集合)> id?

在這種情況下,您還可以使用數組來存儲圖像引用。 同樣,如果您認為文檔的大小可能會超過該限制,則將圖像作為文檔存儲在單獨的集合中的解決方案是 go 的解決方案。

如何查詢當前用戶收到的所有圖片? 像 db.collection("users").document(currentUser.uid)...

是的,通過獲取對用戶文檔的引用:

db.collection("users").document(currentUser.uid)

然后讀取images數組。

暫無
暫無

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

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