Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase实时数据库android java_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Firebase实时数据库android java

Firebase实时数据库android java,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,有人能回答我的问题吗:为什么我不能像这样在root中创建child: mDatabase.child("teams").child(uniqueIDstr).child("members").child(currentUser.getEmail()).setValue("XD"); 因为这样的东西工作正常: mDatabase.child("users").child(currentUser.getUid()).c

有人能回答我的问题吗:为什么我不能像这样在root中创建child:

mDatabase.child("teams").child(uniqueIDstr).child("members").child(currentUser.getEmail()).setValue("XD");
因为这样的东西工作正常:

mDatabase.child("users").child(currentUser.getUid()).child("groups").child(uniqueIDstr).setValue("group");

问题出在这个调用
child(currentUser.getEmail())
中。电子邮件地址始终至少包含一个
,Firebase实时数据库中的密钥中不允许使用该字符。当您运行非常明确地告诉您这一点的代码时,实际上应该会收到一条错误消息


常见的解决方案是对电子邮件地址进行“编码”,例如,通过删除电子邮件地址中的
,或将每个
更改为
。后者是一个巧妙的技巧,因为
不允许出现在电子邮件地址中,而允许出现在实时数据库密钥中。

问题在于调用
子对象(currentUser.getEmail())
。电子邮件地址始终至少包含一个
,Firebase实时数据库中的密钥中不允许使用该字符。当您运行非常明确地告诉您这一点的代码时,实际上应该会收到一条错误消息


常见的解决方案是对电子邮件地址进行“编码”,例如,通过删除电子邮件地址中的
,或将每个
更改为
。后者是一个巧妙的技巧,因为
不允许出现在电子邮件地址中,而允许出现在实时数据库键中。

不清楚问题可能是什么,因为我们看不到此处显示的变量的任何值。您可以先记录这些字符串的值,然后再使用它们,然后显示日志,这样我们就可以了解哪些字符串没有按照您期望的方式工作。另外,这里的代码没有检查调用setValue时的错误,因此可能出现了问题,但您永远不会知道。不清楚问题可能是什么,因为我们看不到您在这里显示的变量的任何值。您可以先记录这些字符串的值,然后再使用它们,然后显示日志,这样我们就可以了解哪些字符串没有按照您期望的方式工作。此外,这里的代码没有检查调用setValue时的错误,因此可能会出现问题,但您永远也不会知道。