好的,所以我有一个对象,其中包含一个Firebase用户列表,可以在其中创建该对象,我遇到的问题是嵌套的对象需要数据库中其他位置的信息。我将如何为每个子节点检索数据并返回带有嵌套对象的一个对象?下面是具有更好解释和一些代码的数据库结构
https://i.imgur.com/Ze62aTU.png
因此,在-(Collabs)>(User_uid)中,每个推送ID都是一个对象,对于(Artists)中的每个“用户”,我需要从-(Users)>(User_uid)>(image)中检索图像返回一个对象。如果这看起来有点昧,我会道歉,因为我对此还有些陌生。谢谢!
public void getAllCollabs() {
FirebaseUser current_user = auth.getCurrentUser();
String current_uid = current_user.getUid();
DatabaseReference db_collabs = db_root.child("Collabs").child(current_uid);
final ArrayList<Collab> collabs = new ArrayList<>();
Query collab_query = db_collabs.orderByKey();
collab_query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
ArrayList<String> artists = new ArrayList<>();
String title = dataSnapshot.child("mTitle").getValue().toString();
String content = dataSnapshot.child("mContent").getValue().toString();
Long date_time = dataSnapshot.child("mDateTime").getValue(Long.class);
String push_id = dataSnapshot.child("push_id").getValue().toString();
String creator = dataSnapshot.child("creator").getValue().toString();
Iterable<DataSnapshot> collab_artists = dataSnapshot.child("Artists").getChildren();
for (DataSnapshot user : collab_artists) {
artists.add(user.getKey())
}
Collab collab = new Collab(date_time, title, content, creator, push_id, null);
collabs.add(collab);
loadCollabResults.collabsLoaded(collabs, true);
}
答案 0 :(得分:0)
由于您获取了艺术家ID并将其存储在artists
数组中,因此您可以获取用户ID并使用该ID提取图像URL。
for(String user : artists){
db_root.child("Users").child(user).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String image = dataSnapshot.child('image').getValue().toString();
db_root.child("Collabs").child(collabID).child(-Where the image is going-).setValue(image);
}
}
}
希望这就是您想要的!