我遵循了文档,但无论如何,我都无法弄清楚如何从单个节点返回所有对象。例如,我想从companies
节点返回所有公司对象的列表。一旦我有了这个列表,我想将它们全部解析为JSON对象。这是我第一次使用NoSQL数据库,所以我确信我错过了一些小的东西。
目前我有:
DatabaseReference companiesRef = FirebaseDatabase.getInstance().getReference("12265");
companiesRef.child("companies").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Count ", dataSnapshot.getChildren().toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
但它只返回null
的{{1}}。
这是我的数据库:
答案 0 :(得分:1)
您可以像这样创建参考:
FirebaseDatabase.getInstance().getReference("12265");
这意味着Firebase会查看数据库的根目录,并从那里返回子12265
。它不会自动在树中搜索具有匹配名称的节点。
所以你需要指定整个路径:
FirebaseDatabase.getInstance().getReference("android/users/12265");
答案 1 :(得分:0)
不要向getReference()添加任何参数(让它转到数据库的根目录),然后设置addListenerForSingleValueEvent。并且您还没有在数据快照上使用getvalue()。试试这段代码:
DatabaseReference companiesRef = FirebaseDatabase.getInstance().getReference();
// this is the patch that I see from the image that you have attached.
companiesRef.child("telenotes").child("android").child("user").child("12265").child("companies").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("Count ", dataSnapshot.getChildren().getValue().toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});