この例は、国にリストされている駐車スペースです。 userParkingDistanceMapでデータベースを構成する理由は、現在のユーザーとすべての駐車スペースの距離でソートされているためです。Firebase Consoleデータベースのルール:データベースルールで次のデータベース構造をインデックスする方法
データベースクエリは.orderByChild("userParkingDistanceMap/" + getUid())
です。
これで、データベースルールでこのuserParkingDistanceMap
をどのようにインデックスできますか?それはpsudoのようなものですので、
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)
{}
});
まあ、私はちょうど、直接の回答で、このコードを書いた:だから、基本的にあなたが
valueEventListnerがあるfinal FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("parking");
ref.addListenerForSingleValueEvent(valueEventListner);
のようなもので、参照を初期化している場合があります
"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" : {
}
は複雑すぎるようです。 – shortstopmin