能否在Firestore中设置自定义文档ID?Firebase实时数据库迁移问题
解答
完全可以实现。你当前使用的add()方法是Firestore的快捷写入接口,默认会自动生成随机文档ID,要自定义文档ID为用户UID,替换写入逻辑即可。
修改后的代码示例
db = FirebaseFirestore.getInstance(); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("id", userid); hashMap.put("email", email); hashMap.put("username", username); // 手动指定文档ID为用户UID,调用set方法写入数据 db.collection("Users").document(userid) .set(hashMap) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Toast.makeText(RegisterActivity.this, "OK", Toast.LENGTH_SHORT).show(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // 可自行添加写入失败的处理逻辑 Toast.makeText(RegisterActivity.this, "写入失败:" + e.getMessage(), Toast.LENGTH_SHORT).show(); } });
补充说明
- 如果对应UID的文档已存在,
set()方法默认会覆盖整个文档内容。如果你仅需要更新部分字段、避免覆盖已有数据,可以将set(hashMap)修改为set(hashMap, SetOptions.merge()) - 后续读取该用户数据时,直接通过
db.collection("Users").document(userid).get()即可获取对应文档,和你此前使用实时数据库的操作逻辑基本一致,迁移成本很低。
内容的提问来源于stack exchange,提问作者user10492720
相关产品推荐
相关产品推荐

