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