簡體   English   中英

即時消息傳遞系統的Firebase / NoSQL模式

[英]Firebase/NoSQL schema for an instant messaging system

我正在為應用程序使用Firebase,並且內置的實時功能似乎非常適合即時消息傳遞。 我腦子里很難解決應該如何設置數據庫。 理想情況下,它是這樣的:

messages: {
  <messageId>: {
    from: <userId>,
    to: <userId>,
    text: <String>,
    dateSent: <Date>
    dateRead: <Date>
  }
}

這對於發送消息來說很好,但是讀取消息線程變得困難。 我需要查詢(可能很大)消息列表以查找與當前線程的發送者和接收者匹配的消息,然后按dateSent 如果使用Firebase的新查詢API可以做到這一點,那么我還沒有確切地知道如何做到這一點。

查詢大量消息絕不是一個好主意。 如果您想要快速運行的Firebase / NoSQL應用程序,則需要對數據建模以允許快速查找。

在聊天場景中,這通常意味着您需要將聊天室建模為數據結構。 因此,與其存儲一長串消息,不如分別存儲每個聊天“房間”的消息。

messages
  <roomId>
    <messageId1>: "..."
    <messageId2>: "..."
    <messageId3>: "..."

現在,您無需查詢即可訪問聊天消息,只需ref.child(roomId).on(...

如果您想要一個持久的映射以確保相同的兩個用戶最終在同一個房間中,請查看在Firebase中管理聊天頻道的最佳方法

暫無
暫無

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

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