Firebase Android Database Query (Read Data)



我正在尝试从Firebase数据库中获取数据,其中valueNum是+91的联系电话。我在随附的屏幕截图中显示了相同的内容,但是当我运行代码时。它给了我一个所有用户的列表,甚至来自不同的 valueNum。但是,如果我传递不正确的值,则给我相同的结果,即没有错误。

private void funcDatabaseActivity(String valueNum) {
databaseReference.child("users").child("registered-user/" + valueNum).addChildEventListener
(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if (dataSnapshot.exists()) {
UserData data = dataSnapshot.getValue(UserData.class);
Toast.makeText(ContactsActivity.this, "Data Exists - " + data.getDisplayName(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ContactsActivity.this, "Data Not Exists", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}

如数据库的屏幕截图所示,您正在执行不正确的序列。我已经在答案中为您修改了这个。

您必须采用逻辑路径才能访问特定信息。此外,您还可以阅读有关ChildEventListener,其用途以及它与addValueEventListener之间的区别。

private void funcDatabaseActivity(String valueNum) {
databaseReference= FirebaseDatabase.getInstance().getReference("database-find-me");
databaseReference.child("users").child("registered-user").child(valueNum).addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {  
//Type here as you like
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(this, "check your internet", Toast.LENGTH_SHORT).show();
}
});
}

相关内容

最新更新