Firebase侦听特定字段中的更改

Firebase侦听特定字段中的更改,firebase,Firebase,我正在使用firebase开发实时虚拟聊天室。我想知道是否有可能监听firebase db中特定字段的更新。例如,如果数据的结构如下所示: {channel_name: test-app, {id: unique_id_generated_automatically_by_firebase, {user_id: some_id, position: { current: {x:x,y:y}, start: {x:x,y:y}, en

我正在使用firebase开发实时虚拟聊天室。我想知道是否有可能监听firebase db中特定字段的更新。例如,如果数据的结构如下所示:

{channel_name: test-app,
  {id: unique_id_generated_automatically_by_firebase,
    {user_id: some_id,
     position: {
       current: {x:x,y:y},
       start: {x:x,y:y},
       end: {x:x,y:y}
    }
  }
  {id: unique_id_generated_automatically_by_firebase,
    {user_id: some_id,
     position: {
       current: {x:x,y:y},
       start: {x:x,y:y},
       end: {x:x,y:y}
    }
  }
} 
目前,我能够听到db中的任何类似变化

//reference to firebase db
var room = new Firebase("https://test-app.firebaseio.com/");
room.on("child_changed", function(snapshot) {
   //do something here; 
});
我要寻找的是一种方法,可以监听position.start和position.end字段的更改,但忽略position.current(这些字段是唯一会更新的字段)。只有当用户登录以获取当前房间中所有用户的当前位置时,才需要当前位置。之后,位置将根据开始和结束值在客户端计算机上设置动画。我还希望通过不向所有连接的客户端发送当前位置的更改来节省数据传输,但在请求时具有当前状态。非常感谢您的帮助和建议

您可以为感兴趣的每个字段绑定.on(“value”)事件

var房间=新的消防基地(“https://test-app.firebaseio.com/“+室友);
房间。子(“位置/开始”)。打开(“值”,一旦更改);
房间。儿童(“位置/结束”)。在(“价值”,一旦改变);
函数onChange(快照){
if(snapshot.name()=“开始”){
//position.start更改为snapshot.val()
}else if(snapshot.name()=“end”){
//position.end更改为snapshot.val()
}
}

不幸的是,这不起作用。我认为这是因为每个position对象都由唯一id对象包装,所以引用应该是
room.child(unique\u id/position/end)。在…
上,我找到了类似问题的另一个答案,建议在“child\u added”函数中单独附加侦听器:
room.on(“child\u added”,function(snapshot){snapshot.ref().child(“position/end”).on()}
。我遇到的另一个问题是从快照的父级检索数据。因为事件仅附加到对开始/结束字段的更改,所以快照对象仅包含这些字段的子级?