亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用子屬性和通配符的 Firebase 實時數據庫查詢

使用子屬性和通配符的 Firebase 實時數據庫查詢

忽然笑 2022-11-02 10:52:43
我有以下數據庫結構,用于將區域映射到相應的城市:"Areas" : {    "Area_1" : {      "EnglishName" : "TheAreaNameInEnglish",      "GermanName" : "TheAreaNameInGerman",      "cityName" : "City_1"    },    "Area_2" : {      "EnglishName" : "TheAreaNameInEnglish",      "GermanName" : "TheAreaNameInGerman",      "cityName" : "City_1"    },    "Area_3" : {      "EnglishName" : "TheAreaNameInEnglish",      "GermanName" : "TheAreaNameInGerman",      "cityName" : "City_5"    },      --      --    }現在,一旦用戶選擇 City_1,我想顯示該城市的所有區域。在我們的例子中,僅 Area_1 和 Area_2!我正在嘗試做這樣的事情:mAreasNodeReference.(WILD_CARD).orderByChild("cityName").equalTo("City_1").addListenerForSingleValueEvent..etc如果可能的話,我怎樣才能實現這樣的查詢?或者,如果這會導致解決方案,我該如何修改數據庫結構?
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

像這樣試試


Query myTopPostsQuery = mAreasNodeReference.child("Areas").orderByChild("cityName").equalTo("City_1");

myTopPostsQuery.addValueEventListener(new ValueEventListener() {

            @Override

            public void onDataChange(DataSnapshot dataSnapshot) {

                if(dataSnapshot.getValue()!=null){

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

                         String AreaName=snapshot.getKey();

                         Log.d(TAG,"AreaName "+AreaName)

                         String germanName  = snapshot.child("GermanName").getValue(String.class);

                    }                    

                }

            }


            @Override

            public void onCancelled(DatabaseError databaseError) {


            }

        });


查看完整回答
反對 回復 2022-11-02
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您可以嘗試以下方法:


DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("Areas");

databaseReference.orderByChild("cityName").equalTo("City_1").addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(DataSnapshot dataSnapshot) {

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

         String key         = ds.getKey();

         String germanName  = ds.child("GermanName").getValue(String.class);

         String englishName = ds.child("EnglishName").getValue(String.class);

       }

    }

}

@Override

public void onCancelled(DatabaseError databaseError) {

  }

});

在這里,您dataSnapshot位于節點Areas,然后您在直接子代中循環,它將根據查詢檢索數據。


查看完整回答
反對 回復 2022-11-02
  • 2 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號