說我有以下幾點:火力地堡獲得的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