如何查询所有孩子,然后在firebasedatabase中取根名?

时间:2018-09-16 00:52:36

标签: android firebase-realtime-database

我正在制作一个Android应用。我想发布人们的广告。但是我遇到了一个问题。我无法查询所有孩子。我有2个类型信息。这些是所选的类别和用户名(@之前的单词。)我想根据该类别发布所有用户广告。但是我无法覆盖所有孩子,我也不知道该怎么做。顺便说说;当我到达所有孩子时。我不知道该如何扎根。不幸的是:我无法正确解释我的问题。 这样:我用图像向您展示我的问题。

这是我的基于firebase的数据库如何查看:

enter image description here

例如:我正在寻找“KadınSağlığı”。

enter image description here

在我需要找到这些根之后:

enter image description here

最后这是我的代码:

    firebaseDatabase = FirebaseDatabase.getInstance();

        uzmanlar_firebaseDatabase = firebaseDatabase.getReference("Uzman/");
uzmanlar_firebaseDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        uzman_kisiler_ilanlar_array.clear();
        for (DataSnapshot ds : dataSnapshot.getChildren()) {


            String child = ds.getKey();
            uzman_kisiler_ilanlar_array.add(child);

            for (int i = 0; i < uzman_kisiler_ilanlar_array.size(); i++) {

              Log.i(TAG, "uzmanlarım: "  + uzman_kisiler_ilanlar_array.get(i).toString() + " " + uzman_kisiler_ilanlar_array.size() );

            }

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});
 for (String s: uzman_kisiler_ilanlar_array
         ) {

        uzmanlar_yetenekler_firebaseDatabase = firebaseDatabase.getReference("Uzman/" + s + "/" +  "yetenekler/" );
        uzmanlar_yetenekler_firebaseDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds:dataSnapshot.getChildren()

                        ) {
                    String ss = ds.getValue().toString();

                    Log.i(TAG, "yetenekl: "  + ss  );

                }


            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您将孩子与root混淆了,您的意思可能是相应子节点的父节点。

  

我认为您想从当前正在侦听的节点获取父节点DatabaseReference。请签出DatabaseReference docs

getParent()调用getRoot()dataSnapshot.getRef()可能会完成这项工作。

如文档所述:

  

getRoot()返回对该Firebase数据库的根目录的引用。

     

getParent()到父位置的DatabaseReference,如果此实例引用根位置,则为null

编辑:

uzmanlar_firebaseDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        uzman_kisiler_ilanlar_array.clear();
        DatabaseReference root = dataSnapshot.getRef().getRoot();
        // Now you got the root
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});