在将数据添加到cloud firestore作为实时数据库之前,如何获得cloud firestore文档唯一Id.&l



我们可以在添加数据之前在实时数据库中推送键,但在cloud firestore中,我找不到任何方法来在添加数据之前找到唯一的键

String uniqueKey = ref.push().getKey();

所以我做了两个操作添加,然后更新。如果我能在添加数据到firestore之前获得唯一键,我可以做一个操作,只是添加包含在文档中的唯一键。

目前我正在这样做。

集合引用

final sitesRef = FirebaseFirestore.instance
.collection('book_mark')
.doc(getUserId())
.collection("link")
.withConverter<SiteModel>(
fromFirestore: (snapshots, _) => SiteModel.fromJson(snapshots.data()!),
toFirestore: (siteModel, _) => siteModel.toJson(),
);

添加文档,然后从响应获取文档Id,然后用文档Id更新文档。所以如果更新操作失败了,我就不能再访问文档了。所以它会在这一行产生一个问题.

Future<String> addSiteFireStore(SiteModel siteModel) async {
try {
DocumentReference<SiteModel> response = await sitesRef.add(siteModel);
final Map<String, dynamic> data = <String, dynamic>{};
data['docId'] = response.id;
sitesRef.doc(response.id).update(data);
_logger.fine("Link added successfully");
return "Link added successfully";
} on Exception catch (_) {
_logger.shout("Could not add link.Please try again");
return "Could not add link.Please try again";
}
}

有没有办法提前得到文档Id ?提前谢谢。

您可以通过在CollectionReference上调用doc()(不带参数)来获取新的文档引用,而无需写入它。然后,您可以从新的文档引用中获得id属性,类似于在新的RTDB引用中调用getKey()的方式。

:

final newRef = FirebaseFirestore.instance
.collection('book_mark')
.doc();
final newId = newRef.id;

请参阅CollectionReference.doc()上的FlutterFire文档。

相关内容

  • 没有找到相关文章

最新更新