插入前存在Firebase检查数据

时间:2017-12-26 04:10:29

标签: javascript firebase firebase-realtime-database

我在使用Firebase时遇到了一些问题。我想要做的是创建一个新的聊天室(如果它不存在),否则,获取现有的聊天室ID。到目前为止我所取得的成就是:

enter image description here

数据库结构如下:

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节点,因为它仅用于简化我的阅读目的。

谢谢!

1 个答案:

答案 0 :(得分:1)

嗯,IDK,如果这是一个很好的解决方案,但你可以用(发件人和收件人ID)创建一个chatroomID,所以你需要在数据库中搜索是否存在任何带有两个ID的聊天室。

users
  id001:"User Name"
  id002:"User Name"
chatrooms
  id001id002
    id001
    id002
    latestMessage

要仅在数据库中搜索一次,您可以对ID进行排序,因此它将始终是较低的ID,如上例所示。