如何在Android Firebase中隐式更新节点

Vicente NT:

我的数据库结构

在我的应用中,用户可以创建帖子,并更新其个人资料图片,但是当他们这样做时,其创建的帖子的个人资料图片不会更改。我以为我用下面的代码解决了,但事实并非如此。

有谁知道如何修理它?

在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) {

    }
});
彼得·哈达德(Peter Haddad):

如果要更新userPhotoID下的,则可以执行以下操作:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章