flutter - 如何获取 Firestore 文档 ID?

标签 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 的 future 引用,但这仍然没有给我唯一的文档 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,您只需调用 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.
});

关于flutter - 如何获取 Firestore 文档 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58844095/

相关文章:

flutter - 无法使用 SizedBox 限制 Card 的高度

flutter - 在Flutter中,如何使用WebView制作简单的Browser小部件?

flutter - Flutter OverlayEntry不采用宽度,高度

google-cloud-firestore - agent.add 不工作但 console.log 工作

flutter - 在 iOS 上退出 Google 登录后无法在 Flutter Firebase flutter fire 中使用

dictionary - 如何对Map <String,Map <String,int >> Dart进行排序

object - 有没有一种方法可以将Map()对象传递给不同屏幕中的不同状态小部件?

dart - Flutter 获取电话号码

java - 从 FirebaseRecyclerAdapter 获取文档 ID 并将值传递给新页面

angular - 从单个文档 Angular 和 Firestore 检索值