亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何交叉查詢實時 Firebase 數據庫?

如何交叉查詢實時 Firebase 數據庫?

白衣染霜花 2023-03-03 15:05:38
我試圖了解 Firebase 中的查詢。我想傳遞 userId A 和 B,看看他們是否訂閱了一個共同的 chatId,它會返回 true 或 false。如何查詢 userId 并評估我想要的輸出的結果?export const checkForExistingChat = (currentUserId, recipient) => {  var IdList = {}  var query = database    .ref(`Chats/${currentUserId}`)    .orderByChild("subscribedToChat")    .once("value", function (dataSnapshot) {      dataSnapshot.forEach(function (childSnapshot) {        const childData = childSnapshot.val();        console.log("childData : ", childData);      });    });};導出聊天的 JSON  "Chats" : {    "61vtPjp8YVVSzpvexwXMgEHghYf1" : {      "subscribedToChat" : {        "1a555cbf-30b7-4c8f-9986-4252a7620c45" : "1a555cbf-30b7-4c8f-9986-4252a7620c45",        "2d718ea7-eafa-48db-af14-f165f07b3b08" : "2d718ea7-eafa-48db-af14-f165f07b3b08",        "2e4fd8bb-4afb-4229-83ec-5a427fe2731d" : "2e4fd8bb-4afb-4229-83ec-5a427fe2731d",        "35c537ef-57dd-48c5-9350-5d1fe2e9d118" : "35c537ef-57dd-48c5-9350-5d1fe2e9d118",        "3a816ac1-6e97-4d66-ae19-77e65f8c2df4" : "3a816ac1-6e97-4d66-ae19-77e65f8c2df4",        }    },    "qqpBNbEa8ZSiCEUlseFeGeiRqzh2" : {      "subscribedToChat" : {        "1a555cbf-30b7-4c8f-9986-4252a7620c45" : "1a555cbf-30b7-4c8f-9986-4252a7620c45",        "35c537ef-57dd-48c5-9350-5d1fe2e9d118" : "35c537ef-57dd-48c5-9350-5d1fe2e9d118"      }    }  }
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

因為您已經知道如何從 Firebase 加載數據,所以這本質上是一個非 Firebase 問題:在兩個鍵列表中找到重疊的鍵。


一個快速的代碼片段:


var json = {

  "Chats" : {

    "61vtPjp8YVVSzpvexwXMgEHghYf1" : {

      "subscribedToChat" : {

        "1a555cbf-30b7-4c8f-9986-4252a7620c45" : "1a555cbf-30b7-4c8f-9986-4252a7620c45",

        "2d718ea7-eafa-48db-af14-f165f07b3b08" : "2d718ea7-eafa-48db-af14-f165f07b3b08",

        "2e4fd8bb-4afb-4229-83ec-5a427fe2731d" : "2e4fd8bb-4afb-4229-83ec-5a427fe2731d",

        "35c537ef-57dd-48c5-9350-5d1fe2e9d118" : "35c537ef-57dd-48c5-9350-5d1fe2e9d118",

        "3a816ac1-6e97-4d66-ae19-77e65f8c2df4" : "3a816ac1-6e97-4d66-ae19-77e65f8c2df4",

  

      }

    },

    "qqpBNbEa8ZSiCEUlseFeGeiRqzh2" : {

      "subscribedToChat" : {

        "1a555cbf-30b7-4c8f-9986-4252a7620c45" : "1a555cbf-30b7-4c8f-9986-4252a7620c45",

        "35c537ef-57dd-48c5-9350-5d1fe2e9d118" : "35c537ef-57dd-48c5-9350-5d1fe2e9d118"

      }

    }

  }

};

var keys1 = Object.keys(json.Chats["61vtPjp8YVVSzpvexwXMgEHghYf1"].subscribedToChat);

var keys2 = Object.keys(json.Chats["qqpBNbEa8ZSiCEUlseFeGeiRqzh2"].subscribedToChat);


console.log(keys1, keys2);

var commonKeys = keys1.filter(function(key) {

  return keys2.indexOf(key) >= 0;

});

console.log(commonKeys);

這是一種O(n^2)算法,但我懷疑這會影響您可能擁有的列表大小。如果這是一個問題,并且列表已排序,您可以在每個列表中至少保留一個游標,并且只向前移動一次以使其成為一種算法O(2n)。



查看完整回答
反對 回復 2023-03-03
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號