如何获取Firestore文档ID?

时间:2019-11-13 19:18:15

标签: flutter dart google-cloud-firestore

在Dart中,如何检索集合文档中自动生成的ID?

我有一个名为“用户”的集合,该集合具有带有用户详细信息的自动ID文档。您如何获取该ID?

ID eg: yyHYmbDelykMPDWXHJaV

enter image description here

我正在尝试获取此ID。首次创建文档时,首次创建用户时,user.uid存储在其集合中。

我可以从users数据库中检索不需要的所有数据:

  void getData() {
    databaseReference
     .collection('users')
     .getDocuments()
     .then((QuerySnapshot snapshot) {
    snapshot.documents.forEach((f) => print('${f.data}'));
   });
  } 

我可以获取当前用户的user.uid的将来参考,但这仍然不能为我提供唯一的文档ID。

  Future<DocumentReference> getUserDoc() async {
    final FirebaseAuth _auth = FirebaseAuth.instance;
    final Firestore _firestore = Firestore.instance;
    FirebaseUser user = await _auth.currentUser();
    DocumentReference ref = 
      _firestore.collection('users').document(user.uid);
    print(ref);
    return ref;
  }

是否可以针对数据库用户搜索user.uid并以此方式检索ID?

1 个答案:

答案 0 :(得分:2)

要获取自动生成的ID,您只需在要从中获取文档的任何集合上调用document方法,返回的值将具有documentID

final userDocument = usersCollection.document();
final documentID = userDocument.documentID;

通常在首次创建文档时执行此操作。要在创建documentID后检索它,请将其添加到用户文档本身中:

userDocument.setData({
  documentID: documentID,
  /* ... */
});

不过,我个人使用了Firebase用户的documentID属性,而不是使用自动生成的uid,只是因为它将其与Firebase身份相关联

// user is a FirebaseUser
final userDocument = usersCollection.document(user.uid);
userDocument.setData({
  uid: user.uid,
  // ...displayName, email, etc.
});