我正在使用ref.on()
函数来监控firebase节点的更改,
但是有一个问题,ref.on()
给出了整个数据库记录。
如何才能获得状态已更改的行/节点
function watch()
{
riderequests.once('value', function(snapshot)
{
alert("change");
var newrequest = snapshot.val();
}
}
答案 0 :(得分:0)
要仅获取已更改的特定行/节点,请在ref()
内部引用这些节点,例如,如果您有此节点:
users
userid
name:peter
userid
name: john
然后只获取更改的节点,您可以这样做:
ref().child("user").child(userid); //this will only give you the change in the logged in userid node
此外,您可以使用如下查询:
orderByChild("userid").equalTo(username);
将只提供该特定节点。
on
侦听特定位置的数据更改。
https://firebase.google.com/docs/reference/js/firebase.database.Reference#on
您还可以在检索时执行以下操作来访问特定的节点更改:
var newrequest = snapshot.val().name;
假设name
是您的firebase数据库中的一个节点。
答案 1 :(得分:0)
Firebase提供事件child_added
,child_changed
,child_removed
,用于处理从firebase添加,修改和删除子节点的不同事件。阅读此link。
根据Firebase文档: -
每次子节点都会触发child_changed事件 改性。这包括对孩子后代的任何修改 节点。它通常与child_added和。一起使用 child_removed响应项目列表的更改。快照 传递给事件回调包含孩子的更新数据。
要获取已更改节点的详细信息,请使用child_changed
事件。基本上,只要更改子节点,就会触发此事件。它将生成更改节点的快照。
riderequests.on('child_changed', function(snapshot){
var newrequest = snapshot.val();
console.log(snapshot.val())
}