Android 无效的Firebase路径:testuser@gnail.com. Firebase路径不得包含'''#''$'';[';,或';]';
我正在制作一个注册页面,我想在其中检查输入的特定电子邮件或输入的手机是否已经存在。我认为不接受将emailText作为字符串,但如何获取电子邮件和密码。 以下是代码:Android 无效的Firebase路径:testuser@gnail.com. Firebase路径不得包含'''#''$'';[';,或';]';,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在制作一个注册页面,我想在其中检查输入的特定电子邮件或输入的手机是否已经存在。我认为不接受将emailText作为字符串,但如何获取电子邮件和密码。 以下是代码: public boolean userExist(){ //private Firebase mRef = new Firebase("https://abcdefgh.firebaseio.com/users/"); mRef.child(_emailText.getText().toString()).ad
public boolean userExist(){
//private Firebase mRef = new Firebase("https://abcdefgh.firebaseio.com/users/");
mRef.child(_emailText.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Toast.makeText(getBaseContext(), "Email already exist. Please choose a different one", Toast.LENGTH_SHORT).show();
_emailText.setError("Email already exist. Please choose a different one");
valid = false;
}
else{
email = _emailText.getText().toString();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mRef.child(_mobileText.getText().toString()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
_mobileText.setError("Mobile Number already exist");
valid = false;
}
else{
mobile = _mobileText.getText().toString();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
return valid;
}
数据库结构如下所示:
您的子密钥是
5Ri…
,而不是电子邮件
你在找这个
mRef = new Firebase("https://abcdefgh.firebaseio.com/");
mRef.child("users")
.orderByChild("email")
.equalTo("testuser@gnail.com").addListener...( ) {
};
您的键不能包含句点,因为错误状态为。用其他字符替换它们请编辑您的帖子以包含数据库的结构该结构是在“abcdefgh”中有一个用户,如果您注册,则会创建电子邮件、手机和所有内容,我尝试的是在注册时获取这些电子邮件和手机,并与我的edittext内容进行比较。再次,请以基本方式显示您的实际数据库,您将无法在
mRef.child(“testuser@gnail.com“”
作为元素的键。当然,您正在尝试执行mRef.orderByChild(“电子邮件”).equalTo(“testuser@gnail.com“
?我这样做了,但我正在单击“创建帐户”按钮,它仍将进入下一个活动,然后调用Toast error。但是它不应该,它应该首先进入监听器方法内部并调用监听器方法,而不应该首先进入下一个活动。如果您有其他错误,请随意创建更多的帖子,但此解决方案适用于您询问的特定错误about@divJ,则不能在Firebase侦听器之后写入返回。返回是即时的,返回后会调用onDataChange
,尽管代码中的“高于返回”。异步代码就是这样工作的