如何获取子firebase数据库的参考

时间:2017-07-21 08:12:13

标签: android firebase firebase-realtime-database

我正在尝试从我的firebase数据库中引用smth3

|smth1
---|smth2
   ---|smth3
      ---|smth4
      ---|smth5

代码:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference().child("smth1")
        .child("smth2");
 mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                int count = 0;
                DataSnapshot needSnapshot = null;
                for (DataSnapshot snapshot : dataSnapshot.getChildren()){                       
                        needSnapshot = snapshot;
                        if(count == getPosition()){
                            break;
                        }
                        count++;

                }


                mDatabase.child(needSnapshot.getKey()).removeValue();
                notifyItemRemoved(getPosition());
                notifyItemRangeChanged(getPosition(), getItemCount());
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

此代码始终删除smth2。

获得引用后,我想删除它的所有子项和值 请帮助获取smth3的参考

2 个答案:

答案 0 :(得分:3)

Firebase数据库仅存储值及其关联路径。如果给定路径下没有值,则会自动删除该路径。由于smth3smth2下的唯一值,因此删除smth3也会删除smth2

这个逻辑与在smth2下编写值时自动创建smth3这一事实密切相关。路径会根据需要自动创建,并在空白时删除。

答案 1 :(得分:0)

首先,您需要将此依赖项添加到您的应用级build.gradle文件中,以将实时数据库添加到您的应用中:

compile 'com.google.firebase:firebase-database:11.0.2'

然后你可以像这样读/写任何数据库:

private DatabaseReference mDatabase;

mDatabase = FirebaseDatabase.getInstance().getReference();

mDatabase.child("smth1").child("smth2").child("smth3").removeValue();

有详细记录here