我正在开发一款使用Firebase数据库的Android应用。
"posts": [
{
"post_id": 100,
"post_kind": "V"
},
{
"post_id": 100,
"post_kind": "S"
},
{
"post_id": 100,
"post_kind": "S"
}
]
我想查询选择post_kind = S的所有帖子
我正在使用查询
databaseReference = firebaseDatabase.getReference("posts");
query = databaseReference.orderByChild("post_kind").equalTo("S");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
List<Post> list = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Post post = (Post) snapshot.getValue(Post.class);
list.add(post);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("DatabaseError", databaseError.toString());
}
});
但不是结果
试试这个。
databaseReference = firebaseDatabase.getReference("posts");
query = databaseReference.orderByChild("post_kind").equalTo("S");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
int postId = snapshot.child("post_id").getValue();
String postKind = snapshot.child("post_kind").getValue();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("DatabaseError", databaseError.toString());
}
});
要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("posts").orderByChild("post_kind").equalTo("S");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Post> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Post post = ds.getValue(Post.class);
list.add(post);
}
Log.d("TAG", list.toString);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("DatabaseError", databaseError.toString());
}
};
query.addListenerForSingleValueEvent(eventListener);