Firestore / Flutter - 如何获取文档 ID?
Posted
技术标签:
【中文标题】Firestore / Flutter - 如何获取文档 ID?【英文标题】:Firestore / Flutter - How can I get document Id? 【发布时间】:2019-05-05 10:43:44 【问题描述】:这是我的代码
Future _save() async
final StorageReference storageRef = FirebaseStorage.instance.ref().child('product/'+nameController.text+'.jpg');
final StorageUploadTask task = storageRef.putFile(_image);
StorageTaskSnapshot taskSnapshot = await task.onComplete;
String downloadUrl = await taskSnapshot.ref.getDownloadURL();
StorageMetadata created = await taskSnapshot.ref.getMetadata();
Firestore.instance.collection('product').document()
.setData(
'name': nameController.text,
'price': int.tryParse(priceController.text),
'description': descriptionController.text,
'creator': widget.user.uid,
'created': DateTime.fromMillisecondsSinceEpoch(created.creationTimeMillis, isUtc: true).toString(),
'modified': DateTime.fromMillisecondsSinceEpoch(created.updatedTimeMillis, isUtc: true).toString(),
'url': downloadUrl,
'id': //I want to set document Id here //
);
我怎样才能得到这个随机生成的文档的 ID? 谢谢你的帮助
【问题讨论】:
【参考方案1】:使用 value.Id 获取部分 documentId。
CollectionReference users = FirebaseFirestore.instance.collection('candidates');
Future<void> registerUser()
// Call the user's CollectionReference to add a new user
return users.add(
'name': enteredTextName, // John Doe
'email': enteredTextEmail, // Stokes and Sons
'profile': dropdownValue ,//
'date': selectedDate.toLocal().toString() ,//// 42
)
.then((value) =>(showDialogNew(value.id)))
.catchError((error) => print("Failed to add user: $error"));
【讨论】:
【参考方案2】:从cloud_firestore 包的 v0.14.0 开始:
已弃用:documentID 已弃用,取而代之的是 id。
所以而不是
ref.documentId
使用
ref.id
检索随机生成的文档 id。
【讨论】:
【参考方案3】:您可以通过调用您的 ref.documentID 来获取 ID
【讨论】:
【参考方案4】:你就是这样的
DocumentReference documentReference = Firestore.instance.collection('product').document();
documentReference.setData(
'name': nameController.text,
'price': int.tryParse(priceController.text),
'description': descriptionController.text,
'creator': widget.user.uid,
'created': DateTime.fromMillisecondsSinceEpoch(created.creationTimeMillis, isUtc: true).toString(),
'modified': DateTime.fromMillisecondsSinceEpoch(created.updatedTimeMillis, isUtc: true).toString(),
'url': downloadUrl,
'id': documentReference.documentID
);
文档编号
documentReference.documentID
【讨论】:
【参考方案5】:在collection
之后,您可以添加document
并接收DocumentReference
。
final docRef = await Firestore.instance.collection('product').add(
'name': nameController.text,
'price': int.tryParse(priceController.text),
'description': descriptionController.text,
'creator': widget.user.uid,
'created': DateTime.fromMillisecondsSinceEpoch(created.creationTimeMillis, isUtc: true).toString(),
'modified': DateTime.fromMillisecondsSinceEpoch(created.updatedTimeMillis, isUtc: true).toString(),
'url': downloadUrl,
);
现在可以获取文档ID了:
docRef.documentID
【讨论】:
以上是关于Firestore / Flutter - 如何获取文档 ID?的主要内容,如果未能解决你的问题,请参考以下文章
如何从flutter中的firestore文档字段中获取数据?
Flutter:Google Maps 如何从 Firestore 设置图标
如何在flutter中获取firestore文档的documentid?