仅获取firebase中的节点值更改

时间:2018-03-16 06:51:14

标签: firebase firebase-realtime-database

我正在使用ref.on()函数来监控firebase节点的更改, 但是有一个问题,ref.on()给出了整个数据库记录。 如何才能获得状态已更改的行/节点

function watch()
{
    riderequests.once('value', function(snapshot)
       {
        alert("change");
        var newrequest = snapshot.val();
      }
  }

2 个答案:

答案 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_addedchild_changedchild_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())
}