我有这样的结构法在我FirebaseDatabase
。我想,如果key
检查与9028571487
存在任何我的数据库中节点的值。如果存在,那么我应该能够获得关键mess
的值,其中该值9028571487
存在特定的节点。我使用此代码:
public void Check(){
final String phone=username.getText().toString();
ref = database.getReference().child("Users");
Query query=ref.orderByChild("phone").equalTo(phone);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data:dataSnapshot.getChildren()){
if(data.child(name).exists()){
Log.i("Present","Present");
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如何解决这个问题?
您的代码看起来不错,只是你根据phone
财产订购您的用户和被传递到equalTo()
方法名称的事实。为了解决这个问题,传递给equalTo()
方法对应的手机,而不是名字。
Query query=ref.orderByChild("phone").equalTo(phone);
编辑:
如果您onDataChange()
方法不甚至称,你可能没有足够的权限。检查这个使用下面的代码行:
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}