我有以下数据库结构:
我有以下代码:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("tsdzskLGyVZvgflaKDhfntHpB443");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "OnDataChange");
if ( dataSnapshot.exists() ){
Log.d(TAG, "travelname add: " +dataSnapshot.getValue() );
}
}
产生以下输出:
D/SelectFriendTravAct:OnDataChange
D/SelectFriendTravAct: travelname add: {testTravel={-KkbcQmUhnKoVUGLBpgn=692ffda5-b197-44a8-bda7-5f0f6d8db14c.png, -KkavGiyImQylckuwzvv=a901d768-e9c0-47f0-a683-346bb8a88e47.png}}
相反,我只需要检索子树的根:" testTravel"。有没有办法在不下载整个子树的情况下获得它?
答案 0 :(得分:0)
在实时数据库中无法将值提升到n级。但是,如果您仅将其用于快速UI构建,请使用REST API。它也不会消耗你的并发连接。
尝试:
https://database_url/tsdzskLGyVZvgflaKDhfntHpB443.json?shallow=true
注意:您需要授予公共读取权限或使用访问令牌。阅读more
答案 1 :(得分:0)
您可以将addValueEventListener与for循环一起使用,并传递要使用的子树的名称。
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for (DataSnapshot child :dataSnapshot.child("testTravel").getChildren())
{
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});