首页 > 解决方案 > 如何在 2 个随机键下检索子数据

问题描述

仅当stallID = 1 时,如何在recyclerview 上显示RequestsID?我的 DatabaseReference 应该如何?

在此处输入图像描述

更新:

在此处输入图像描述

在此处输入图像描述

标签: androidfirebasefirebase-realtime-database

解决方案


您的数据库结构不支持orderByChild()顶级节点。因此,您必须将数据库引用设置为节点food,然后您可以使用orderByChild()查询来查找具有某些stallID.

这在代码中看起来像这样:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Requests").child("1542..").child("foods");

  ref.orderByChild("stallID").equalTo(stallIDYouWant).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            for (DataSnapshot ds : dataSnapshot.getChildren()){
                                 // do here what you wanted
                            }

                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) { 
                              // ToDo: don't ignore this, do something for errors

                        }
                  )};               

这实际上对您没有多大帮助,因为您必须为数据库结构中的每个唯一 ID 设置它。

所以在这里做的更好的事情是让你的数据库结构不同。要了解更多如何使您的结构适合此操作,请参阅此答案。


推荐阅读