说我有以下几点:火力地堡获得的dataSnapshot(JavaScript的API)参考网址全路径
var firebaseARef = new Firebase("http://this.is.my/firebase/url/A/reference")
var firebaseBRef = new Firebase("http://this.is.my/firebase/url/B/reference")
当我定义我.on()
功能,我想指定一个处理程序,然后尽一切在我的代码中的一个地方处理,而不是必须定义与.on()
定义内联的功能。为了说明:
var handleAllFirebaseStuff = function(dataSnapshot){
var name = dataSnapshot.name(); //PROBLEM HERE: returns "reference", no way to distinguish!
switch(name){
case "http://this.is.my/firebase/url/A/reference": //How do I get this full reference from dataSnapshot?
/* do stuff for A reference */
case "http://this.is.my/firebase/url/B/reference": //How do I get this full reference from dataSnapshot?
/* do stuff for B reference */
default:
break;
}
}
firebaseARef.on('value', handleAllFirebaseStuff);
firebaseBRef.on('value', handleAllFirebaseStuff);
的问题是dataSnapshot.name()
只会在两种情况下返回"reference"
,因此不可能在开关/ case语句中的两个引用来区分!
我敢肯定dataSnapshot
包含此信息某处,但我还没有以任何方便的方式发现它。在控制台中探索dataSnapshot
对象,我发现有一个对象被埋在被称为path
的对象中,该对象包含(除其他之外)使用上面的示例的数组,其中包含["firebase", "url", "A", "reference"]
,但没有简单的方法来访问它。
如果我有权访问该数组,我可以重建URL或找到更方便的方式来处理switch/case语句。我认为从dataSnapshot
可以得到一个完整的参考字符串作为易于访问的值。
您是否在寻找'snapshot.ref()。toString()'? – 2014-09-03 19:49:13
就是这样!在Firebase的JavaScript API中记录这些信息将非常有帮助!如果你想提供答案,我会很乐意接受它... – MandM 2014-09-03 20:48:01