3

我正在使用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}
    }
  }
} 

目前我能够像这样监听数据库中的任何变化

//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(这些是唯一会更新的字段)。只有在用户登录时才需要当前位置,以获取当前房间内所有用户的当前位置。之后,位置将根据开始和结束值在客户端计算机上进行动画处理。我还想通过不向所有连接的客户端发送当前位置的更改来节省数据传输,但在请求时具有当前状态。非常感谢任何帮助和建议。

4

1 回答 1

2

You can bind a .on("value") event for each field you're interested in.

var room = new Firebase("https://test-app.firebaseio.com/" + roomID);
room.child("position/start").on("value", onChange);
room.child("position/end").on("value", onChange);
function onChange(snapshot) {
  if (snapshot.name() == "start") {
    // position.start changed to snapshot.val()
  } else if (snapshot.name() == "end") {
    // position.end changed to snapshot.val()
  }
}
于 2013-09-18T18:28:15.007 回答