用于检查用户是否存在于数据库中的Firebase身份验证

时间:2018-01-29 11:56:43

标签: java android firebase firebase-realtime-database firebase-authentication

这是我的Firebase数据库结构

STUDENT
 ur14cs002
    id:ur14cs002
    pass:abc
 ur14cs001
    id:ur13cs001
    pass:def

我必须检查用户的ID,例如当用户输入编辑文本时,需要检查数据库中是否存在该特定用户。 在代码下面,这就是我所做的,但这段代码根本不起作用。

  EditText id = (EditText) findViewById(R.id.userEmail);

    EditText password = (EditText) findViewById(R.id.userPassword);
    database = FirebaseDatabase.getInstance();

    String child = id.getText().toString();
    String pass = password.getText().toString();
    myRef = database.getReference("STUDENT").child(child);
    myRef.orderByChild("id").equalTo(child).addValueEventListener(new ValueEventListener(){
        @Override
        public void onDataChange(DataSnapshot dataSnapshot){
            if(dataSnapshot.exists() ){
                Toast.makeText(getApplicationContext(),"PRESENT",Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }


    });}}

1 个答案:

答案 0 :(得分:1)

您的引用错误:

 myRef = database.getReference("STUDENT").child(child);

在上面,dataSnapshot将是child,例如id:ur14cs002。所以当然它永远不会存在,因为dataSnapshot将是孩子(这是提供的id)。

你需要这样做: -

  myRef = database.getReference().child("STUDENT");

这样,引用位于节点STUDENT,然后orderByChild("id").equalTo(child)将为您提供正确的结果。这里dataSnapshot将是(STUDENT)节点。