【问题标题】:How to get Firestore document ID?如何获取 Firestore 文档 ID?
【发布时间】:2020-03-09 15:54:52
【问题描述】:

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

我有一个名为“users”的集合,其中包含带有用户详细信息的自动 ID 文档。您如何检索该 ID?

ID eg: yyHYmbDelykMPDWXHJaV

我正在尝试获取此 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?

【问题讨论】:

  • 不知道你在这里问什么。您能否编辑问题以显示您正在使用的代码以及您需要此 ID 的位置?
  • 我需要从用户的集合中获取单个文档。更新的问题。

标签: flutter dart google-cloud-firestore


【解决方案1】:

要获取自动生成的 id,您只需在尝试从中获取文档的任何集合上调用 document 方法,返回的值将有一个用于 documentID 的 getter

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

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

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

虽然我没有使用自动生成的 documentID,但我个人使用 firebase 用户的 uid 属性只是因为它与 Firebase auth 相关联

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2021-07-20
    • 2019-08-02
    相关资源
    最近更新 更多