【发布时间】:2017-11-02 10:07:42
【问题描述】:
有没有一种简单的方法来构建一个在两个用户之间有消息传递的数据库。在 firebase-database 中,您是否必须指向同一事物的指针? 我希望能够在两个用户下对对话进行伪克隆。这样,user1 就有了一个他正在与之交谈的人的列表,user2 也是如此,并且对话信息只需要存储一次。在写这篇文章时,我可能已经回答了我自己的问题,但这是我正在考虑的两种选择。 Block 2 似乎空间效率更高。有没有人对如何解决这个问题有任何其他建议。
块 1:每次发送消息时,都将其存储在两个用户下。
{
messaging:
user1:
user2:
message1:
messageBody: "text"
sender: "user1"
message2:
messageBody: "text"
sender: "user2"
message3:
messageBody: "text"
sender: "user1"
user2:
user1:
message1:
messageBody: "text"
sender: "user1"
message2:
messageBody: "text"
sender: "user2"
message3:
messageBody: "text"
sender: "user1"
}
或者另一种选择是 Block2:每次发送消息时,将其存储在该会话引用下,但对于每对用户都有对该会话的引用。
{
conversations:
conversation1:
message1:
messageBody: "text"
sender: "user1"
message2:
messageBody: "text"
sender: "user2"
message3:
messageBody: "text"
sender: "user1"
pairs:
user2:
user1:
conversationName: "conversation1"
user1:
user2:
conversationName: "conversation1"
}
有没有办法在数据库里说,不管孩子的顺序,都指向同一个东西?所以第二行和第三行将引用相同的内容:
let dbRef = FIRDatabase.database().reference().child("messages")
let user1MessagesRef = dbRef.child("user1").child("user2")
let user2MessagesRef = dbRef.child("user1").child("user2")
【问题讨论】:
-
我通常通过组合参与者的 UID 或用户名来创建唯一的房间名称。见stackoverflow.com/questions/33540479/…
标签: ios swift firebase firebase-realtime-database