首页 > 解决方案 > android : How to filter items in firebase by referring another database reference property

问题描述

I want to get only items that are in users favorites that has required city. For example, if the user has 20 favorite items and if user wants to filter favorites that exists in specific city how to filter it?

Sorry for my English. If anything is not clear, ask me.

image

标签: androidfirebasefirebase-realtime-database

解决方案


看看下面的数据库结构:

root : {
     user_01 : {
           fav_01 : {
                 data : val,
                 city : "city_01"
           }
           fav_02 : {
                 data : val,
                 city : "city_02"
           }
           fav_03 : {
                 data : val,
                 city : "city_01"
           }
     }
}

现在在 andorid 中进行这样的查询:

String user = "user_01";
String city_name = "city_01";
int limit = 10;
DatabaseReference favRef= FirebaseDatabase.getInstance().getReference("root/").child(user);
    Query query = favRef.orderByChild("city").equalTo(city_name).limitToFirst(limit);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
         @Override
         public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              Log.e(TAG, "onDataChange: "+dataSnapshot.toString());
              //you will get fav_01 and fav_3 objects
         }

         @Override
         public void onCancelled(@NonNull DatabaseError databaseError) {
              Log.e(TAG, "onCancelled: "+databaseError.toString());
         }
});

希望它可以帮助您快乐编码:)


推荐阅读