微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firebase在dataSnapshot(javascript API)中获取参考URL的完整路径

我有以下内容
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”,因此无法区分switch / case语句中的两个引用!

我确定dataSnapshot在某个地方包含这些信息,但我还没有以任何方便的方式发现它.在控制台中探索dataSnapshotobject,我发现有一个隐藏在被调用路径中的对象,其中包含(除其他外)一个数组,使用上面的例子,它将包含[“firebase”,“url”,“A”,“引用“],但没有简单的方法来访问它.

如果我有权访问该数组,我可以重建URL或找到一种更方便的方法来处理switch / case语句.我认为完整的参考字符串更适合作为dataSnapshot中易于访问的值.

解决方法

要从快照返回到完整URL,您可以:
snapshot.ref().toString()

toString部分有点违反直觉.我经常发现自己不得不对它进行测试,看看是否真的要走了.

提示如果还有一个更明确的getUrl方法提示,那将是很好的

更新:

最近的SDK版本为ref is no longer a function,因此您必须使用:

snapshot.ref.toString();

原文地址:https://www.jb51.cc/js/156014.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐