我在使用Firebase时遇到了一些问题。我想要做的是创建一个新的聊天室(如果它不存在),否则,获取现有的聊天室ID。到目前为止我所取得的成就是:
数据库结构如下:
chatrooms
chatroomID
participantID1 *(can be senderKey or recipientKey)*
participantID2 *(can be senderKey or recipientKey)*
latestMessage
我创建新聊天室的代码:
let promiseRoomKey = new Promise((resolve, reject) => {
// need to perform check before insert new chatroom
// create room for chat
var roomKey = firebase.database().ref('chatrooms').push({
[senderKey]: true,
[recipientKey] : true
}).getKey();
resolve(roomKey);
});
问题出在我创建新聊天室之前,我需要检查senderKey和recipientKey是否存在于同一个聊天室中。如果它们都出现在同一个聊天室中,我会抓住chatroomID。如果没有,那么我将继续创建一个新的聊天室。
但我不知道如何实际检查senderKey和recipientKey是否出现在同一个聊天室中。有什么想法吗?
聚苯乙烯。请暂时忽略latestMessage节点,因为它仅用于简化我的阅读目的。
谢谢!
答案 0 :(得分:1)
嗯,IDK,如果这是一个很好的解决方案,但你可以用(发件人和收件人ID)创建一个chatroomID,所以你需要在数据库中搜索是否存在任何带有两个ID的聊天室。
users
id001:"User Name"
id002:"User Name"
chatrooms
id001id002
id001
id002
latestMessage
要仅在数据库中搜索一次,您可以对ID进行排序,因此它将始终是较低的ID,如上例所示。