如何让用户结构只知道他的电子邮件Firebase Realtime

时间:2018-02-25 12:19:02

标签: java android firebase firebase-realtime-database

我有一个包含子“用户”的实时数据库。这个孩子有不同的用户。 每个用户都有一堆这样的属性:用户(电子邮件,姓名,年龄,电话号码,性别)。

我使用带有唯一生成ID的push函数将它们分开: RealtimeDatabase2é

所以我的问题是:我希望知道特定用户的所有属性,我只有他的电子邮件地址。

我已经尝试过此查询,但我不知道它是如何工作的

    reference.orderByChild("email").equalTo(email

2 个答案:

答案 0 :(得分:1)

你可以试试这个: -

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检索数据的详情

Retrieving Data From Firebase

答案 1 :(得分:1)

要显示该数据,请使用以下代码:

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中显示nameage的示例。以同样的方式,您也可以获得其他价值。