如何更新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?