【问题标题】:Firebase: Query inner child without knowing the parentFirebase:在不知道父级的情况下查询内部子级
【发布时间】:2019-05-05 14:47:11
【问题描述】:

所以我想知道是否有一种方法可以基于内部子级进行查询,而无需知道 Firebase 数据库中的父级?这是确切的情况: 如图所示,我想查询 title = "bj" 的整个数据快照,因为我已经自动推送它们,所以我不知道密钥(或本例中的父项)。我很好奇 Fb Query 是否必须直接查看嵌套的子项? TIA

private void fetchPinnedLocationsForSearchbar(String key) {

        Query query = MyApplication.database.getReference("/pins/").child("title").orderByKey().equalTo(key);
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Log.e("-->X-DATA-FROM-QUERY", dataSnapshot.toString());
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                    final BusinessModel pinItModel = new BusinessModel();
                    if (((Boolean) dataSnapshot1.child("ifBusiness").getValue())) {
                        if  
                            BusinessModel pinItModelTest = dataSnapshot1.getValue(BusinessModel.class);

                            Log.e("->PicCount", pinItModelTest.getPicCount() + "");
//
                            _data.add(pinItModelTest);


                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    所以我从 StackOverFlow 上的另一篇帖子中找到了答案,该帖子建议解决方案应该是这样的:

    FirebaseDatabase.getInstance().getReference("pins").orderByChild("title").equalTo("bj").addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    Log.e("-->X--ChildAddedQUERY", dataSnapshot.toString()+"---"+s);
    
                }
    
                @Override
                public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
    
                }
    
                @Override
                public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
    
                }
    
                @Override
                public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
    
                }
    
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
    
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-08
      • 2016-06-12
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多