为什么Firebase DB会跳得更深一层?

时间:2017-03-09 19:09:35

标签: android firebase firebase-realtime-database

情况如下,我将Firebase DB用于小型应用程序,DB的结构如下。

DB structure

我知道这种结构对于Firebase来说并不是最好的,可能问题在这里。

我的问题是,当我试图从父母那里获取儿童名单时,Firebase会从一个更深层次的实体向我提供儿童名单。对于前者与这个数据库样本有关 - 如果我试图从"大学"实体,我得到输出" Faculty",但应该得到输出" UNN"。我是对的吗?

以下是我用于检索数据的代码示例:

 mDBRef = FirebaseDatabase.getInstance().getReference().child("University");


        final ListView listView = (ListView) findViewById(R.id.lv_main);


        mGruppeChildEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                List<String> lst = new ArrayList<String>(); // Result will be holded Here
                for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                    lst.add(String.valueOf(dsp.getKey())); //add result into array list
                }
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, lst);
                listView.setAdapter(adapter);

            }

1 个答案:

答案 0 :(得分:0)

好吧,这是因为firebase的onChildAdded方法带有你正在阅读的父级子项的参数。如果您在“大学”上添加了儿童事件监听器,您将获得类似'UNN' - &gt; Faculty的价值。再次,如果您对此执行getChildren方法,您将获得'Faculty' - &gt; RGF。所以如果你申请了getKey,当然它会返回Faculty。