我的Firebase NoSQL数据库应该看起来像这样:
每当新用户登录时,都应该推送用户Java模型。
如何检查拥有该电子邮件地址的用户是否已拥有帐户?由于电子邮件地址位于:Root> PushID>电子邮件;和推送ID是自动生成的,我不知道如何迭代所有推送ID并检查是否有任何其电子邮件密钥设置为指定值。
我已阅读文档,但无法弄清楚如何解决此问题。
Firebase涉及儿童的方法可适用于任何儿童,无论其等级如何,即不限于直系儿童。
在这个问题中,要搜索的孩子比普通父母低2级。可以忽略第一级子项,并且可以直接将查询方法应用于目标子项。
答案 0 :(得分:2)
您应首先为用户制作模型类
class User {
public String email;
public String name;
}
然后从数据库中获取用户并将其映射到用户对象
简单循环浏览所有结果查询
FirebaseDatabase database = FirebaseDatabase.getInstance();
// i don't know the end point since you have not specified it in the image
database.getReference("myUsersEndPoint").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
User user = data.getValue(User.class);
if (myField.getText().toString().eqaulsIgnoreCase(user.email)) {
// exist
}
}
}
@Override
public void onCancelled(DatabaseError databaseError)
Log.w("MyApp", "getUser:onCancelled", databaseError.toException());
}
});
仅搜索特定值
在此示例中,我们使用orderByChild
和equalTo
方法将结果限制为特定子值
FirebaseDatabase database = FirebaseDatabase.getInstance();
// i don't know the end point since you have not specified it in the image
database.getReference("myUsersEndPoint").orderByChild("email").equalTo("emailToSearchhere").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
// here the user will have the specified email only
}
}
@Override
public void onCancelled(DatabaseError databaseError)
Log.w("MyApp", "getUser:onCancelled", databaseError.toException());
}
});