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

10-12 01:24
查看更多