我几天前遇到问题,但我找不到解决方法。
我正在尝试按名称搜索我的firebase数据库,但结果始终为null。
数据库是下一个;
我使用的代码是下一个;
final String nombre = edtNombreJugador.getText().toString().trim().toUpperCase();
mDatabase.child("user").child("personalData").orderByChild("name").equalTo(nombre);
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()){
String title = (String) singleSnapshot.child("name").getValue(String.class);
System.out.println("TITLE: "+title);
}
在我的情况下,标题总是返回null。
是的,有人能帮帮我吗?我不知道我做得不好......答案 0 :(得分:3)
现在您正在查询数据库路径/user/personalData
。然后对于那里的每个子节点,您将name
属性与用户输入的值进行比较。所以/user/personalData/***/name
。
这与数据库中的路径/user/***/personalData/name
不匹配。要查询您:
Query query = mDatabase.child("user").orderByChild("personalData/name").equalTo(nombre);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {...
答案 1 :(得分:0)
我也尝试使用这段代码(对我来说更清楚)返回数据库中的所有名称,但结果也是null:
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("/users/");
mDatabase.child("personalData");
final UsersData[] user = {null};
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
String title = (String)
postSnapshot.child("name").getValue(String.class);
System.out.println("TITLE: "+title);
}
}
@Override
public void onCancelled(DatabaseError firebaseError) {
Log.e("The read failed: " ,firebaseError.getMessage());
}
};
mDatabase.addValueEventListener(postListener);