使用where条件获取Fire base实时数据库

时间:2019-04-11 13:57:54

标签: android firebase-realtime-database

我正在尝试使用where条件从Firebase实时数据库中获取数据。 我想获取基于特定关键字的所有数据。请在下面输入我的JSON数据。

enter image description here

我想获取公司等于Balaji Seeds的数据。而且我想打印姓氏proid。

我尝试了以下代码。

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference mDatabaseReference = database.getReference();
    Query query = mDatabaseReference.child("Products").orderByChild("company").equalTo("Balaji Seeds");


        query.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String previousChildKey) {
                Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();

                Toast.makeText(CompanyCategoryList.this, "ProName: "+newPost.get("proname"),Toast.LENGTH_LONG).show();


            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }


        });

希望您能理解我的担心。预先感谢。

1 个答案:

答案 0 :(得分:0)

Firebase实时数据库查询对子节点列表进行操作。您的数据结构是深层嵌套的,这使得查询变得更加困难。

在当前数据模型中,您可以在/Products/Vegetable_Seeds/Chili上运行查询,然后获取company等于Balaji Seeds的子节点。但是数据模型不允许在该节点的所有Products中进行查询。

如果要允许此查询,则必须将当前模型更改为平面列表,或者添加其他数据结构以保留查询公司产品所需的数据。

另请参阅: