Android 如何创建包含=符号的firebase路径(不转换为%3D)
在我的firebase数据库中,我尝试创建以下路径:Android 如何创建包含=符号的firebase路径(不转换为%3D),android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,在我的firebase数据库中,我尝试创建以下路径: FirebaseDatabase.getInstance().getReference().child(encodedMail); encodedMail值是:dGVzdEB0ZXN0LnRlc3Q=(它是邮件地址test@test.test编码为Base64) 在firebase数据库中,创建为:dGVzdEB0ZXN0LnRlc3Q%3D。如何确保创建的引用为:dGVzdEB0ZXN0LnRlc3Q= 我可以在Firebase控制台中手
FirebaseDatabase.getInstance().getReference().child(encodedMail);
encodedMail
值是:dGVzdEB0ZXN0LnRlc3Q=
(它是邮件地址test@test.test编码为Base64)
在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);
调用
DatabaseReference.toString()
时,它会输出一个可以粘贴到浏览器中的URL。这就是=
被编码的原因
当您再次解码
=
时。据我所知,Firebase不编码子名称。文本字符串被发送到服务器并(如果有效/合法)存储在那里。例如:这是您在我的数据库中的路径:https://stackoverflow.firebaseio.com/39931981/dGVzdEB0ZXN0LnRlc3Q=.json
。你能告诉我你是如何写一个地址的,然后你又是如何遇到问题的吗?嗨,弗兰克,我已经用相关的代码扩展了这个问题。我想我应该通过重构代码来解决这个问题(跳过getReference().child()部分,直接将路径构造为字符串)。我不知道这是从哪里来的。等一下,我四处问问。
MainActivity: Remove manager: dGVzdEB0ZXN0LnRlc3Q=
MainActivity: Encoded mail: dGVzdEB0ZXN0LnRlc3Q=
MainActivity: Reference: https://xxxxx-development.firebaseio.com/sharedEvents/dGVzdEB0ZXN0LnRlc3Q%3D
MainActivity: Path: /sharedEvents/dGVzdEB0ZXN0LnRlc3Q%3D