如何根据用户在文本字段中输入的电子邮件从Firebase数据库中检索值?

时间:2018-02-04 09:41:26

标签: java android firebase firebase-realtime-database

我正在使用Firebase数据库。如何根据用户在文本字段中输入的电子邮件从数据库中检索值。下面是我的数据库结构。请帮助。

database structure

这是我的代码:

 Ref = database.getReference("Registeration"); 
                        Ref.orderByChild("UserRegistration/email").equalTo(emailval).addChildEventListener(new ChildEventListener() {
                            @Override
                            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                                user_reg user=dataSnapshot.getValue(user_reg.class);
                                Toast.makeText(getApplicationContext(), user.toString(), Toast.LENGTH_SHORT).show();
                            }

2 个答案:

答案 0 :(得分:2)

你有:

 Registration
       UserRegistration
               12
                pushid
                  key:values
                  email:emailvalue

要检索值,您必须始终从上到下,因此您不能跳过任何节点。

只有orderByChild(..)个查询可以跳过一个节点(这意味着如果你想让不是直接孩子的孩子,你可以使用这个查询)

试试这个:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Registration").child("UserRegistration").child("12");
ref.orderByChild("email").equalTo(emailenteredbyuser).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
     for (DataSnapshot datas : dataSnapshot.getChildren()) { 
           String email=datas.child("email").getValue().toString();

          }
        }
        @Override
    public void onCancelled(FirebaseError firebaseError) {

       }

 });

正如您在上面所看到的,引用遍历每个节点,直到节点12

然后使用此orderByChild("email").equalTo(emailenteredbyuser)获取用户输入的电子邮件。

for (DataSnapshot datas : dataSnapshot.getChildren())这个for循环datas12的直接子节点内迭代,这是一种pushid,你不需要检索pushid来获取其中的值

答案 1 :(得分:1)

试试这个!在这里,我正在为每个循环运行以获得每个孩子。

Ref.child("UserRegistration").child("email").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot snapshot:dataSnapshot.getChildren()){
                    user_reg user=dataSnapshot.getValue(user_reg.class);
                    System.out.println(user.email);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });