在Dart中,如何检索集合文档中自动生成的ID?
我有一个名为“用户”的集合,该集合具有带有用户详细信息的自动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?
答案 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.
});