在Firebase数据库中,我的帖子具有这种结构。
"posts" : {
"-LP-UfzuUHFJOkY0Ogb9" : {
"dislikeCount" : "0",
"imageUrl" : "https://firebasestorage.googleapis.com/v0/b/privato-dfb2c.appspot.com/o/images%2F2309fdab-0d78-44e5-af1f-8d256efdf6fd.jpg?alt=media&token=1276804f-d48c-4e06-8982-309fd539a397",
"likeCount" : "0",
"postByUser" : {
"aboutMe" : "death is inevitable",
"countryCode" : "+91",
"imageUrl" : "https://i.imgur.com/hAazykl.jpg",
"mobileNumber" : "number",
"name" : "Sid",
"userName" : "deathcode"
},
"timeStamp" : 1539754082148,
"title" : "This is cool, lowest price ever on grocers.",
"type" : 3
}
}
现在,我需要根据json对象对象“ postByUser”下userName的值来检索某些用户的所有帖子。 我遵循某些指南来解决此问题,但是所有指南都使用
在根发布项下的json键值上,而不是在发布项下的另一个json对象下工作。 Query query = dbRef.child("posts").orderByChild("title").equalTo("sometitle");
但是我如何将其用于嵌套的json对象?
答案 0 :(得分:1)
您可以将路径传递到 public void <T> T[] createNewArrayOfClass(Class<T> clazz, int length){
return (T[]) java.lang.reflect.Array.newInstance(clazz, length);
}
,所以:
orderByChild
答案 1 :(得分:0)
使用orderByChild()
查询及其dataSnapshot
后,您可以获得所有同级子值。
此代码如下所示:
//ref is the correct database reference to your firebase database
ref.orderByChild("userName").equalTo(userNameYouWant).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds: dataSnapshot.getChildren()) {
String aboutMe = ds.child("aboutMe").getValue(String.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
您可以使用相同的方法检索其他同级节点值。