【问题标题】:Firebase authentication for checking if the user exists in the database or notFirebase 身份验证,用于检查用户是否存在于数据库中
【发布时间】:2018-07-08 02:47:55
【问题描述】:

这是我的 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) {

        }


    });}}

【问题讨论】:

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


    【解决方案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) 节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-05
      • 2018-11-09
      • 1970-01-01
      • 2019-02-22
      • 2022-06-30
      • 2021-12-26
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多