在我的应用中,用户可以创建帖子,并更新其个人资料图片,但是当他们这样做时,其创建的帖子的个人资料图片不会更改。我以为我用下面的代码解决了,但事实并非如此。
有谁知道如何修理它?
在BD中,如图所示,我具有以下结构,并且在每个帖子ID中都保存了用户ID的数据,我想做的是,不管userId节点相同的所有子代中的帖子ID,都是当前用户userPhoto节点已更新,我认为使用图像代码就足够了,但是它的作用是创建一个Posts的新子节点,但这并不是我在寻找如何解决他们的想法。
final DatabaseReference sd = FirebaseDatabase.getInstance().getReference("Posts");
Query query = sd.orderByChild("userPhoto").equalTo(currentUsers.getPhotoUrl().toString());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
HashMap<String, Object> maps = new HashMap<>();
maps.put("userPhoto", ""+mUri);
sd.updateChildren(maps);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
如果要更新userPhoto
ID下的,则可以执行以下操作:
final DatabaseReference sd = FirebaseDatabase.getInstance().getReference("Posts");
Query query = sd.orderByChild("userPhoto").equalTo(currentUsers.getPhotoUrl().toString());
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
String key = ds.getKey();
HashMap<String, Object> maps = new HashMap<>();
maps.put("userPhoto", ""+mUri);
sd.child(key).updateChildren(maps);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
由于您正在执行查询,因此您要做的就是迭代,然后您将检索正确的随机ID,然后在路径中使用它 child(key)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句