如何在不知道父节点 Firebase 的情况下读取值

http://img4.mukewang.com/648929360001d7f004170165.jpg

我想7NmECb...在不知道节点父亲是什么的情况下获取节点的值。


我只知道如何获得这样的价值:


private void recuperarPedidos(){


    DatabaseReference produtosRef = dReference

            .child("empresa")

            .child( "Farmacia")

            .child(UsuarioFirebase.getIdUsuario());



    produtosRef.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {

            empresas.clear();


            for (DataSnapshot ds: dataSnapshot.getChildren()){

                empresas.add( ds.getValue(Empresa.class) );

            }


            categoria = empresas.get(0).getCategoria();



        }


        @Override

        public void onCancelled(DatabaseError databaseError) {


        }

    });


}


天涯尽头无女友
浏览 86回答 1
1回答

至尊宝的传说

在没有完整路径的情况下,您无法在 Firebase 实时数据库中使用查询来获取两层深的对象。有一个解决方案,您可以在empresa节点上添加一个侦听器并使用getValue()方法。它返回 aMap<String, Object>但不推荐,因为您正在获取该节点内的所有数据。换句话说,这是对带宽和资源的浪费。empresa一种解决方案可能是通过将节点添加为用户对象的属性来更改数据库结构。我将为您提供可以帮助您获取该对象的代码,但我鼓励您找到更适合您要执行的查询的更合适的数据库模式。DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference empresaRef = rootRef.child("empresa");ValueEventListener valueEventListener = new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; for(DataSnapshot ds : dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Map<String, Object> map = (Map<String, Object>) ds.getValue();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Iterate through the map and get the results&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!&nbsp; &nbsp; }};empresaRef.addListenerForSingleValueEvent(valueEventListener);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java