在我的 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/