android - 如何创建包含 = 符号的 firebase 路径(不转换为 %3D)

标签 android firebase firebase-realtime-database

在我的 firebase 数据库中,我正在尝试创建以下路径:

FirebaseDatabase.getInstance().getReference().child(encodedMail);

encodedMail 值是:dGVzdEB0ZXN0LnRlc3Q=(它是 base64 编码的邮件地址 test@test.test)。

在 firebase 数据库中,它被创建为:dGVzdEB0ZXN0LnRlc3Q%3D。我如何确保创建的引用是:dGVzdEB0ZXN0LnRlc3Q=

我可以在 Firebase 控制台中手动创建此路径而不会出现问题,但是一旦我使用对 getReference().child() 的调用创建它,= 符号转换为 %3D?

相关代码如下:

final Map<String, Object> childCreation = new HashMap<>();

Log.d( TAG, "Encoded mail: " + encodedMail );

final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("sharedEvents").child(encodedMail);
Log.d( TAG, "Reference: " + ref );

//see http://stackoverflow.com/questions/36161508/get-path-of-the-firebase-reference
String path = ref.toString().substring(ref.getRoot().toString().length());
Log.d( TAG, "Path: " + path );

childCreation.put( path, "a value");
FirebaseDatabase.getInstance().getReference().updateChildren(childCreation);

日志输出:

MainActivity: Remove manager: dGVzdEB0ZXN0LnRlc3Q=
MainActivity: Encoded mail: dGVzdEB0ZXN0LnRlc3Q=
MainActivity: Reference: https://xxxxx-development.firebaseio.com/sharedEvents/dGVzdEB0ZXN0LnRlc3Q%3D
MainActivity: Path: /sharedEvents/dGVzdEB0ZXN0LnRlc3Q%3D

最佳答案

当您调用 DatabaseReference.toString() 时,它会输出一个可以粘贴到浏览器中的 URL。这就是 = 被编码的原因。

当你reconstruct a DatabaseReference from the string with getReferenceFromUrl()它再次解码 =

关于android - 如何创建包含 = 符号的 firebase 路径(不转换为 %3D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931981/

相关文章:

ios - 如何让 Firebase 自动删除超过 30 分钟的值

java - 如何从 firebase 读取子数据

java - 查找数据库结构中子节点的数量

android - 我们可以直接从我的应用程序安装 google play 商店应用程序吗?

android - 在android中编辑文本焦点

android - Handler 中 post(Runnable) 和 sendMessage(Message) 的区别

ios - 如何修复 user = [AuthDataResult?] nil 和错误 - FIRAuthDomain 代码 17026

firebase - 应用了 AB 测试配置,但 Firebase 控制台显示 0 个用户

java - Android - 仅在具有 MapView 的单个 Activity 上出现许多 OutOfMemoryError 异常

Android Firebase getChildrenCount() 不算数