如何更新firebase数据库特定键中的值

Posted

技术标签:

【中文标题】如何更新firebase数据库特定键中的值【英文标题】:How to update a value in a specif key of firebase database 【发布时间】:2020-04-03 10:26:04 【问题描述】:

如何从 android 更新 firebase 数据库中现有键中的值。就我而言,我希望用户更新密钥 Votes

                        final long z=0;
                        Map<String,Object> taskMap = new HashMap<String,Object>();
                        taskMap.put("Votes", z);

                        FirebaseDatabase.getInstance().getReference()
                                .child("project_image").child(projectDate)
                                .child("Votes")
                                .updateChildren(taskMap);

我尝试了上面的代码,但它添加了另一个节点

        FirebaseDatabase.getInstance().getReference()
       .child("project_image")
       .child(formattedDate)
       .push().setValue(dataMap);

以上代码用于第一次插入数据

如何执行此任务

【问题讨论】:

请仅使用android-studio 标签来回答有关 Android Studio IDE 本身的问题。对于一般的 Android 编程问题,请使用android 标签。 注意到先生,抱歉 4 不便 【参考方案1】:

您还需要访问密钥:

    final long z=0;
 Map<String,Object> taskMap = new HashMap<String,Object>();
 taskMap.put("Votes", z);

FirebaseDatabase.getInstance().getReference().child("project_image")
.child(projectDate).child("-M3zLjPHM_ndBfBDLV9C")
.child("Votes")
.updateChildren(taskMap);

获取密钥:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

reference.child("project_image").child(projectDate).addListenerForSingleValueEvent(new ValueEventListener() 
 @Override
public void onDataChange(DataSnapshot dataSnapshot) 
for(DataSnapshot datas: dataSnapshot.getChildren())
   String key = datas.getKey();

   final long z=0;
   Map<String,Object> taskMap = new HashMap<String,Object>();
 taskMap.put("Votes", z);
   FirebaseDatabase.getInstance().getReference().child("project_image")
.child(projectDate).child(key)
.child("Votes")
.updateChildren(taskMap);
    
 
   @Override
public void onCancelled(DatabaseError databaseError) 
    throw databaseError.toException();
  
 );

【讨论】:

我将如何在 android 中获得该特定键? 您可以使用 getKey 从数据库中迭代并检索密钥,然后进行更新 我仍然得到另一个新节点。注意您建议 getKey() 的密钥是第一次插入数据时自动生成的,请检查我编辑的代码。 如果这个projectDate 等于12:24:18 PM,3 APR 20 那么它会起作用,如果不是那么使用查询orderByChild("Title").equalTo("covid") 然后你会得到密钥,并使用日志来检查key你得到..

以上是关于如何更新firebase数据库特定键中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 上的 Firebase 中获取嵌套键中的值

如何将子firebase数据库中的特定名称获取到recyclerview?

如何使用firebase实时数据库ios增加特定节点中的值

如何使用 Cloud Functions for Firebase 更新 Firebase 实时数据库中的值

如何将数据保存在firebase父键中不是默认值

更新 Firebase 中键的值