如何查询firebase以获取在Android中使用的子数据?
我有一个Firebase数据库,其结构如下:如何查询firebase以获取在Android中使用的子数据?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有一个Firebase数据库,其结构如下: database field1 -KkXawoXnSCInWXugbm- email: "email1@email.com" firstName: "John" lastName: "Smith" phoneNumber: "123456" password: "password1" field2
database
field1
-KkXawoXnSCInWXugbm-
email: "email1@email.com"
firstName: "John"
lastName: "Smith"
phoneNumber: "123456"
password: "password1"
field2
-KkXanaeY4pWSl2Aqltt
email: "email2@email.com"
firstName:"Jane"
lastName: "Doe"
phoneNumber: "5550123"
password: "password2"
在我的Android项目中,我有一个带有电子邮件和密码的登录屏幕。我有一个用户抽象类,它有两个子类,field1和field2
public abstract class User {
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
private String userID; //this is the Firebase generated key as seen above
private String password;
}
我想做的是使用电子邮件找到代表该用户的节点,并访问其其余详细信息,以便验证登录页面中输入的信息
我是Firebase的初学者,已经广泛地寻找了一种实现这一点的方法,但一直无法解决这个问题。任何帮助都将不胜感激 如果您想查看字段,例如Field1。 然后您可以简单地使用以下查询
ref.child("field1") //only useful if you are having multiple nodes in field1
.orderByChild("email")
.equalTo("your_email_query")
使用此DataSnapshot,您可以查询其他详细信息。
希望这能奏效 如果您想查看字段,例如Field1。 然后您可以简单地使用以下查询
ref.child("field1") //only useful if you are having multiple nodes in field1
.orderByChild("email")
.equalTo("your_email_query")
使用此DataSnapshot,您可以查询其他详细信息。
希望这能奏效 你不需要这样做。我建议您做的是将节点从
UID
更改为emailaddress
。这样,您将拥有所有需要查询的内容。但由于Firebase不接受密钥中的
符号,我建议您将电子邮件地址如下所示:
name@email.com -> name@email,com
正如您可能看到的,我已经更改了,
中的
。为此,我建议您使用以下方法:
static String encodeUserEmail(String userEmail) {
return userEmail.replace(".", ",");
}
static String decodeUserEmail(String userEmail) {
return userEmail.replace(",", ".");
}
希望有帮助。您不需要这样做。我建议您做的是将节点从
UID
更改为emailaddress
。这样,您将拥有所有需要查询的内容。但由于Firebase不接受密钥中的
符号,我建议您将电子邮件地址如下所示:
name@email.com -> name@email,com
正如您可能看到的,我已经更改了,
中的
。为此,我建议您使用以下方法:
static String encodeUserEmail(String userEmail) {
return userEmail.replace(".", ",");
}
static String decodeUserEmail(String userEmail) {
return userEmail.replace(",", ".");
}
希望有帮助。UUID是什么意思?如果是这样会更好,否则搜索大型数据库会很慢,这意味着UUID?如果是这样会更好,否则搜索大型数据库会很慢,我这样做了,我的数据库现在是以下形式:field1电子邮件:email1@email.comfirstName:“John”lastName:“Smith”电话号码:“123456”密码:“password1”但dataSnapshot.getValue(field1.class)现在返回空值,如何修复此问题?如果在
userId
上设置了youdrDatabaseReference
,则需要像这样使用String类:String email=(String)dataSnapshot.child(“email”).getValue()
嘿,我这样做了,我的数据库现在是以下形式的:field1 email:email1@email.com"firstName:“John”lastName:“Smith”电话号码:“123456”密码:“password1”但dataSnapshot.getValue(field1.class)现在返回空值,如何修复此问题?如果在userId
上设置了youdrDatabaseReference
,则需要使用如下字符串类:String email=(String)dataSnapshot.child(“email”).getValue()