示例是在一个国家/地区列出的停车位。 使用userParkingDistanceMap构建数据库的原因是按当前用户与所有停车位之间的距离排序。
数据库查询为.orderByChild("userParkingDistanceMap/" + getUid())
。
那么,我如何在数据库规则中对此userParkingDistanceMap
编制索引?
"parkingSpacesTokyo" : {
"parkingId5" : {
"parkingName" : "MY-PARKING-NAME",
"parkingQuantity" : 70,
"userParkingDistanceMap" : {
"uid-uid-uid-uid-uid-uid-uid" : 7983,
"9EAiImOh4ZUnqJ7em51u81FukD73" : 9456,
"AG84p8KJgANuobRJ5pn1ipxULFB3" : 8336,
"yYLVffMFsBQhsGHNWuPOksMDgip2" : 7983,
"yp6mZm2SPVhz5pOq57tSEZ40piJ2" : 7983
}
},
"parkingId6": {
...
}
},
"parkingSpacesYOKOHAMA" : {
}
答案 0 :(得分:0)
所以基本上你可能已经用
这样的东西初始化了引用final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("parking");
ref.addListenerForSingleValueEvent(valueEventListner);
其中valueEventListner为:
ValueEventListner valueEventListner = new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for(DataSnapshot childDataSnapshot: dataSnapshot)
{
DatabaseReference parkindId = ref.child(dataSnapshot.getKey);
for(DataSnapshot parkingIdSnapshot : childDataSnapshot)
{
if(parkindIdSnapshot.hasChildren())
{
for(DataSnapshot distanceMap : parkingIdSnapshot)
{
String value = distanceMap.getValue(String.class);
}
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{}
});
嗯,我刚刚直接回答了这段代码,所以它是一种psudo代码,所以基本上你可能已经了解了它。祝你好运。