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

前端之家收集整理的这篇文章主要介绍了Firebase在dataSnapshot(javascript API)中获取参考URL的完整路径前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有以下内容: @H_404_2@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()定义内联定义函数.为了显示

@H_404_2@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,您可以: @H_404_2@snapshot.ref().toString()

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

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

更新:

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

@H_404_2@snapshot.ref.toString();
原文链接:https://www.f2er.com/js/156014.html

猜你在找的JavaScript相关文章