【问题标题】:How to search through data in firebase android from given structure如何从给定结构中搜索firebase android中的数据
【发布时间】:2018-07-11 09:42:18
【问题描述】:

我想在 firebase 中搜索数据,如下所示:

我已经试过了,但是不行

 //Query query = FirebaseDatabase.getInstance().getReference(uid).orderByChild("title").startAt(editable.toString()).endAt(editable.toString()+"\uf888");

            DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("categoreis");
           Query query =  FirebaseDatabase.getInstance().getReference("categoreis").limitToFirst(4).orderByChild("image");
            query.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    list.clear();
               for (DataSnapshot data:dataSnapshot.getChildren())
               {

                   for (DataSnapshot ds:data.child("SubAccessories").getChildren())
                   {
                       for (DataSnapshot ds1:ds.getChildren())
                       {
                           //Log.d("checkData1",ds1.toString());

                           //Log.d("checkData1",ds1.child("image").getValue(String.class));

                       }
                   }

               }

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    如果您想获得我在您的问题中看到的 image,请使用以下代码行,但假设 categories 节点是您的 Firebase 数据库根目录的直接子节点:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ref = rootRef.child("categories/Accessories/SubAccessories/Accessories/Grab Bar");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String image = dataSnapshot.child("image").getValue(String.class);
            Log.d("TAG", image);
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    ref.addListenerForSingleValueEvent(valueEventListener);
    

    根据您的评论,您应该像这样使用getChildren() 方法循环第二个Accessories 节点:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ref = rootRef.child("categories/Accessories/SubAccessories/Accessories");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String image = dataSnapshot.child("image").getValue(String.class);
                Log.d("TAG", image);
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    ref.addListenerForSingleValueEvent(valueEventListener);
    

    【讨论】:

    • 我想遍历类别根节点的所有节点,然后我想从类别中迭代 -> 子附件 -> 标题 -> 所有产品
    • 请注明您要获取的确切数据。
    • Categories -> Accessories ->SubbAccessories ->heading ->所有分类节点的所有产品
    • 但我想遍历类别父节点的所有节点
    • 您想要数据库中所有项目的列表(来自所有类别)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多