2017-12-10 1 views
2

안녕하세요 여러분, 잘 모르겠지만 왜 널 모르겠는데 .. 왜 내가 도와 줄 수 있는지 모르겠다.Firebase의 데이터 비교

이것은 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) { 
      } 
    }); 

내가 equals와 pass_child로 통과 비교하고 난 점점 그 패스가 null .. 어떤 생각? 감사합니다.

PD. 중포 기지에서 모든 설정에 해당

+0

어디서 비교하고 있습니까? –

+0

그럼 내가 사용하는 경우 ... (pass.equals (pass_child)) .... – Krum

+0

만약 아이 ("패스")를 제거하면 dataSnapshot은 클래스가 될 것입니까? – Krum

답변

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) { 
     } 
}); 

루프에 대한 데이터베이스에서 패스를 할 수있게됩니다 추가. onDatachange은 비동기식이므로 (데이터 검색이 끝날 때까지 기다리지 않고 다른 메서드로 이동하면 데이터를 검색 할 때 onDatachange 메서드로 돌아옵니다) 메서드 내에서 비교해야합니다. onDatachange