[英]how to get a user structure known only his email Firebase Realtime
我有一个包含子“用户”的实时数据库。 这个孩子有不同的用户。 每个用户都有一堆这样的属性:user(email,name,age,phonenumber,gender)。
我使用带有唯一生成 ID 的 push 函数将它们分开:
所以我的问题是:我想知道我只有他的电子邮件地址的特定用户的所有属性。
我试过这个查询,但我不知道它是如何工作的
reference.orderByChild("email").equalTo(email
你可以试试这个:-
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("User");
databaseReference.orderByChild("email").equalTo(email).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String email = dataSnapshot.child("email").getValue(String.class);
String age = dataSnapshot.child("age").getValue(String.class);
String fullName = dataSnapshot.child("fullName").getValue(String.class);
String gender = dataSnapshot.child("gender").getValue(String.class);
String phone_number = dataSnapshot.child("phone_number").getValue(String.class);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("TAG", "error is " + databaseError.getMessage());
}
});
请通过此链接了解有关从 Firebase 检索数据的更多信息
要显示该数据,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("users").orderByChild("email").equalTo(email);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("name").getValue(String.class);
String age = ds.child("age").getValue(String.class);
//and so on
Log.d("TAG", name + " / " + age);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(eventListener);
这是在 logcat 中显示name
和age
的示例。 以同样的方式,您还可以获得其他值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.