android - 添加相同的键名值
问题描述
如果我想添加具有相同键名但不同值的数据,如何在不替换现有数据的情况下做到这一点?例如,数据库如下所示:
database
|______user1
|______sameKey: data1
|______sameKey: data2
如果我使用: DatabaseRef.child(user1).child("sameKey").setValue(data);
,它将sameKey
用新数据覆盖 ,但我希望它只是不同的数据记录。如何做到这一点?
解决方案
如果您想使用相同的键显示不同的记录,只需将其包裹在一个按键下,这是一个字母数字随机值
mDatabaseRef.child(user1).push().child("sameKey").setValue(data);
现在,如果您只想更新当前数据而不是替换它
您将需要使用地图并使用 updateChildren 看看这个例子
Map<String,Object> mapData = new HashMap<>();
mapData.put("sameKey",data);
mDatabaseRef.child(user1).child(sameKey).updateChildren(mapData).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
// Write was successful!
// ...
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Write failed
// ...
}
});
这样你只会替换更新的数据而不是整个节点
在此处查看更新或删除数据
https://firebase.google.com/docs/database/android/read-and-write?hl=en
推荐阅读
- python - 使用 pyinstaller 将 .py 转换为 .exe 后,exe 文件不会启动
- apache-spark - 在 PySpark groupBy 中,如何按组计算执行时间?
- oracle - ODI-1228:任务加载数据-LKM SQL 到 Oracle-在目标 > 连接上失败
- java - 寻找产品价值最大的孩子+java流
- javascript - jQuery 新 div 不会使用 $(document).on 进行动画处理
- java - scanner.skip(pattern) 为 String 和 File 提供异常,但对 System.in 不提供
- neo4j - Neo4j社区版并行连接查询优化
- logging - 将 Google 负载均衡器上的请求记录到后端
- java - 在 java 中使用 Lambda 显示文本
- node.js - 如何让node.js函数在不访问端口的情况下运行