4

我正在使用 firebase 并列出了具有某些优先级的人员列表。在我的一项职能中,设置和获取优先级工作正常。但在另一个方面,我只能设置并尝试获取项目的优先级返回“dataSnapshot.getPriority() 不是函数”。

var playersList = new Firebase('https://myfirebase.firebaseIO.com/players') 
var winnerSnapshot =  playersList.child(winner);
winnerSnapshot.setPriority('1300'); //This is working
var oldPriority = winnerSnapshot.getPriority(); //Not working
4

1 回答 1

2

这里实际上有两种不同类型的对象在起作用。Firebase参考DataSnapshot。当您调用 new Firebase() 时,您会得到一个 Firebase 引用,它允许您写入数据(例如使用 set 或 setPriority)或附加回调以读取数据(例如使用 on 或 once)。

这些使用 on() 或 once() 注册的回调通过 DataSnapshot 接收数据,您可以在其上调用 .getPriority( )。查看阅读数据文档以获取完整的详细信息。

例如,要使您的示例正常工作,您可以执行以下操作:

var winner = "somebody";
var playersListRef = new Firebase('https://myfirebase.firebaseIO.com/players') 
var winnerRef =  playersListRef.child(winner);

// You use a firebase reference to write data.
winnerRef.setPriority('1300');

// You can also use a firebase reference to attach a callback for reading data.
winnerRef.once('value', function(winnerSnapshot) {
  // Inside your callback, you get a DataSnapshot that gives you access to the data.
  var priority = winnerSnapshot.getPriority();
});
于 2012-11-15T15:33:29.737 回答