[英]How to get the key as soon as value gets changed in 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.