繁体   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