【问题标题】:How to update a value in a specif key of firebase database如何更新firebase数据库特定键中的值
【发布时间】: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 不便

标签: java android firebase firebase-realtime-database


【解决方案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你得到..
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多