我有两个节点 用户和植物
Users
|
|-plantId
|
|-image
|
|-imageLink
|-plantId
|
|-image
|
|-imageLink
Plants
|-plantId
|
|-collectedPlant
|
|-plantCount
用户和植物的plantid
将是相同的。我需要获取一个包含植物 id-imagelink 和 plantCount 的HashMap
。
我分别随身携带两个节点数据。有没有简单的方法来解决它?
要根据编辑的数据库结构并假设 plantCount
属性定义为 Long
来解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference imageRef = rootRef.child("Users").child("plantId").child("image");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String imageLink = ds.child("imageLink").getValue(String.class);
DatabaseReference collectedPlantRef = rootRef.child("Plants").child("plantId").child("collectedPlant");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Long> map = new HashMap<>();
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
Long plantCount = dSnapshot.child("plantCount").getValue(Long.class);
map.put(imageLink, plantCount);
}
//Do what you want with this Map.
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
collectedPlantRef.addListenerForSingleValueEvent(eventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
imageRef.addListenerForSingleValueEvent(valueEventListener);
如您所见,我使用了嵌套查询来获取您要查找的地图。