我可以在 firestore 中设置自定义 ID 吗?

Could I set custom ID in firestore?

之前用的是real-time DB,现在改用firestore了

我在实时DB写数据的时候用的就是这个方法

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
String userid = firebaseUser.getUid();
reference = FirebaseDatabase.getInstance().getReference().child("Users").child(userid);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("id", userid);
hashMap.put("email", email);
hashMap.put("username", username);

所以数据会这样显示

  "Users" : {
    "02nfE2JziDgzxZwYpmCwQ20QwQ93" : {
      "email" : "sowtp12pushcivet@gmail.com",
      "id" : "02nfE2JziDgzxZwYpmCwQ20QwQ93",
      "username" : "AAA"
    },

但是当我使用 firestore 时,它​​会显示这个

  "Users" : {
    "u93AclSJJiLQBdfcK2st" : {
      "email" : "sowtp12pushcivet@gmail.com",
      "id" : "02nfE2JziDgzxZwYpmCwQ20QwQ93",
      "username" : "AAA"
    },

我可以把u93AclSJJiLQBdfcK2st改成02nfE2JziDgzxZwYpmCwQ20QwQ93吗,如果可以改,我该怎么办?

这是我的代码。

db = FirebaseFirestore.getInstance();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("id", userid);
hashMap.put("email", email);
hashMap.put("username", username);

db.collection("Users").add(hashMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Toast.makeText(RegisterActivity.this, "OK", Toast.LENGTH_SHORT).show();
   }
});

当您调用 add() 时,Firestore 会生成一个新的文档 ID。它相当于为实时数据库 API.

调用 push()

如果您想指定自己的文档 ID,请不要调用 add,而是使用 document("yourNewId").set()

db.collection("Users").document(userid).set(hashMap)...

另请参阅 setting a document value 上的 Firebase 文档。