簡體   English   中英

如何在 firebase 中更改值后立即獲取密鑰?

[英]How to get the key as soon as value gets changed in firebase?

我有這樣的 firebase 結構

Firebase 結構

我想在狀態變為 1 時立即獲得密鑰/號碼。

我試過了..

//Listen for number
var ref = firebase.database().ref("games/" + gameId + "/numbers");

ref.orderByChild('status').equalTo('1').on("value", function(snapshot)
{
  snapshot.forEach((function(child){ 
    console.log(child.key);
  }));
});

但是每次狀態更新時,我都會得到狀態 = 1 的每個數字。我只想要最后更新的數字。

當您偵聽value事件時,您每次都會獲得包含所有匹配數據的快照。

如果您想獲得更精細的通知,您可以監聽child_*事件。 例如,要聽到節點狀態何時設置為 1,您可以監聽child_added

ref.orderByChild('status').equalTo('1').on("child_added", function(snapshot)
{
    console.log(snapshot.key);
});

您會注意到我還刪除了forEach 由於child_事件會針對每個單獨的孩子觸發,因此您不再需要循環。

如果您發現很難確定要聽哪個child_事件,我發現將查詢視為數據的“視圖”最容易。 當子節點的狀態設置為 1 時,它進入視圖,所以它是child_added 當子節點的狀態設置為另一個值時,它會離開視圖,因此會觸發child_removed

使用child_changed而不是value 它只會返回單個值,其中孩子將被更改,因此我們將直接通過snapshot.key獲取密鑰。

//Listen for number
    var ref = firebase.database().ref("games/" + gameId + "/numbers");

    ref.orderByChild('status').equalTo('1').on("child_changed", function(snapshot)
    {
        console.log(snapshot.key);
    });

我想,這對你會有幫助。

暫無
暫無

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

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