Android Firebase数据库:选择子树的父亲

时间:2017-05-20 21:00:51

标签: android firebase firebase-realtime-database

我有以下数据库结构:

dbstructure

我有以下代码:

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"。有没有办法在不下载整个子树的情况下获得它?

2 个答案:

答案 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)
            {

            }
        });