java - 将 2 个哈希图添加到 Firestore 中的单个文档
问题描述
我已将 1 个 Hashmap 上传到 firestore。当我尝试将另一个 Hashmap 上传到同一个文档时,它会替换我以前的 Hashmap。为什么会这样?
我每次都更改字符串标题,但它仍然替换了以前的 Hashmap。
String poll1 = Poll1.getText().toString().trim();
String poll2 = Poll2.getText().toString().trim();
String poll3 = Poll3.getText().toString().trim();
String title = Title.getText().toString().trim();
DocumentReference documentReference = firestore.collection("Polls").document("abc1");
Map<String, Object> nestedData = new HashMap<>();
nestedData.put(poll1 , 0 );
nestedData.put(poll2 , 0);
nestedData.put(poll3 , 0);
Map<String, Object> upload = new HashMap<>();
upload.put(title, nestedData);
documentReference.set(upload).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(polls.this, "UPLOADED", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(polls.this, "FAILED", Toast.LENGTH_LONG).show();
}
});
解决方案
您的文档需要提到这必须合并而不是替换。
.set(data, SetOptions.merge())
如果它有效,试试这个。
documentReference.set(upload, SetOptions.merge()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(polls.this, "UPLOADED", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(polls.this, "FAILED", Toast.LENGTH_LONG).show();
}
});
推荐阅读
- angular - 打字稿类型'字符串| 留言 | (string[] | Message[])[]' 不能分配给类型 'string[] | 信息[]'
- mysql - 即使我是管理员也无法写入 .bash_profile 文件
- scala - 如何创建地图列以计算没有 udaf 的出现次数
- python - 由于某种原因无法从 p 标签获取文本 - Selenium (Python)
- reactjs - 使用 Firebase onSnapshot 在不刷新的情况下使用新添加的事件填充 React-Big-Calendar
- mysql - mysql - 将数组值作为列而不是值进行转义和读取的问题
- python - 从 Django 中另一个已安装应用程序链接的 URL 标记
- python - 复数相乘时看似任意的结果
- flutter - 如何在颤振提供者包中正确使用消费者
- c# - 如何在 Entity Framework 中管理实体的版本控制?