java - 如何在android Firestore的文档字段中保存文档ID?
问题描述
我可以将文档保存到 firestore,但我也想将新保存的文档 id 也保存到同一个文档中,我正在尝试下面的示例,但效果不佳
String id = db.collection("user_details").document().getId();
Map map = new HashMap<>();
map.put("username", username);
map.put("email", email);
map.put("id", id);
UserRef.document(id).set(map).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//progressbar invisible;
;
}
});
解决方案
每次调用时document()
,您都会获得一个新的唯一 ID。所以,一定要只调用一次,这样你就只处理一个ID。
首先获取 DocumentReference:
DocumentReference ref = db.collection("user_details").document();
获取其 ID:
String id = ref.getId();
然后编写要发送的数据:
Map map = new HashMap<>();
map.put("username", username);
map.put("email", email);
map.put("id", id);
最后,将该数据放入前面引用的文档中:
ref.set(map)...
推荐阅读
- excel - 读取 excel 文件并在 MATLAB 中为每列分配一个变量
- html - 基本 HTML 页面中的画布始终大小为 300x150。
- python - 将标准输出写入文件时,Windows 上的 Python “句柄无效”
- python-3.x - 如果按钮在列表中,如何编辑按钮上的文本?
- sql - 存储实体时 Oracle 错误 01843 不是有效月份
- vba - 更新到 Office 365 后找不到默认收件箱
- python - 为模型提供服务时,找不到名称为空的张量
- javascript - 在 Ubuntu 18.04 上使用 Sequelize 时收到错误。Mac 上完全相同的文件不会发生错误
- email - 如何加密消息node.js sendmail?
- svg - circle 和 stroke-dasharray 的跨浏览器 SVG 渲染问题