比较Firebase的数据

时间:2017-12-10 11:27:09

标签: android firebase firebase-realtime-database

嗨,大家好我得到了一个空的,我不知道为什么......如果你可以帮助我,我会感到沮丧。

这是我在Firebase上的json。

usuarios{
 krum{
      dni: "43193622"
      email: "pedroccc"
      login: "krum"
      nombre:"pedro"
      pass: "1234" }

这是我的方法:

login_text = (EditText) findViewById(R.id.txtLogin);

onClickListener:

final String log_child = login_text.getText().toString();
final String pass_child = pass_text.getText().toString();
mDatabase = FirebaseDatabase.getInstance().getReference("usuarios").child(log_child);

mDatabase.child("pass").addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot dataSnapshot) {
            String mpass = dataSnapshot.getValue(String.class);
            pass = mpass;
            }

     @Override
     public void onCancelled(DatabaseError databaseError) {
            }
     });

然后我将pass与pass_child与equals进行比较,我得到的传递是null ..任何想法?谢谢

PD。在Firebase中,所有设置均为真

1 个答案:

答案 0 :(得分:1)

试试这个:

final String log_child = login_text.getText().toString();
final String pass_child = pass_text.getText().toString();
mDatabase = FirebaseDatabase.getInstance().getReference("usuarios").child(log_child);

mDatabase.addValueEventListener(new ValueEventListener() {
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot data : dataSnapshot.getChildren()){
        String mpass = data.getValue().toString();
        pass = mpass;
        if(pass.equals(pass_child)){
            //code here
         }
        }
   }

 @Override
 public void onCancelled(DatabaseError databaseError) {
        }
 });

添加for循环将使您能够从数据库获取传递。由于onDatachange是异步的(意味着它不等到它完成检索数据,然后转到其后的其他方法,然后当它检索数据时它返回到方法onDatachange)然后你有在方法onDatachange

内进行比较