Man*_*ndM 9 javascript firebase
说我有以下内容:
var firebaseARef = new Firebase("http://this.is.my/firebase/url/A/reference")
var firebaseBRef = new Firebase("http://this.is.my/firebase/url/B/reference")
Run Code Online (Sandbox Code Playgroud)
当我定义我的.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);
Run Code Online (Sandbox Code Playgroud)
问题dataSnapshot.name()只会"reference"在两种情况下都返回,因此无法区分switch/case语句中的两个引用!
我确定在某个地方dataSnapshot包含这些信息,但我还没有以任何方便的方式发现它.探索控制台中的对象,我发现有一个埋藏在被调用内的对象,它包含(除其他外)一个数组,使用上面的例子,它将包含,但没有简单的方法来访问它.dataSnapshotpath["firebase", "url", "A", "reference"]
如果我有权访问该数组,我可以重建URL或找到一种更方便的方法来处理switch/case语句.我认为完整的参考字符串将更适合作为一个易于访问的值dataSnapshot.
Fra*_*len 23
要从一个Snapshot完整的URL返回,您可以:
snapshot.ref().toString()
Run Code Online (Sandbox Code Playgroud)
这toString部分有点违反直觉.我经常发现自己不得不对它进行测试,看看是否真的要走了.
提示如果还有一个更明确的getUrl方法提示,那将是很好的
最近的SDK版本ref不再是一个功能,所以你必须使用:
snapshot.ref.toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9807 次 |
| 最近记录: |