gpt4 book ai didi

firebase - 如何使用 Flutter 将 documentID 保存在 Firebase 文档中

转载 作者:行者123 更新时间:2023-12-03 03:14:15 25 4
gpt4 key购买 nike

我在 Firebase 中有一个名为 favoritePost 的集合,该集合有几个从我的应用获取数据的字段,其中一个字段是需要作为创建文档时生成的 documentID ,问题是我使用了太多代码来实现此结果,并且在创建文档时我还收到大约 2 秒的错误.

我想知道是否有更好的实现以及如何修复错误。

我在这里创建集合

问题就在这里,当创建集合时,我在主页中收到错误,因为该文档没有数据,它只是创建字段,并且我无法使用 docref.documentId在字段内,因此我必须创建一个新方法来更新此集合并保存包括 docref.documentId 在内的数据。

final docsref = await favRef
.document(widget.currentUserId)
.collection('favoritePost')
.add(
{
'imageUrl': '',
'caption': '',
'likeCount': 0,
'authorId': '',
'timestamp': '',
'userName': '',
'userImage': '',
'id': '',
'idSecondPost': '',
'experience': '',
'cSrateStars': '',
'productName': '',
'brand': '',
'cost': '',
'envioDiasRateStars': '',
'easyPurchaseRateStars': '',
'totalRate': '',
'businessName': '',
'recomendation': '',
'videoLink': '',
},
);

这里我将一些数据(包括 docsref.documentID)传递到我的数据库文件

DatabaseService.addFavorite(
currentUserId: widget.currentUserId,
post: widget.reviews,
docref: docsref.documentID);

这里的数据保存到之前创建的集合中,现在我可以将 docsref.documentID 包含到 id 字段中

static void addFavorite(
{String idReview,
Reviews post,
String currentUserId,
String toId,
String docref}) {
DocumentReference postRef = reviewRef.document(post.idReview);
postRef.get().then(
(doc) {
final docsref = favRef
.document(currentUserId)
.collection('favoritePost')
.document(docref)
.updateData({
'imageUrl': post.imageUrl,
'caption': post.comments,
'likeCount': post.likeCount,
'authorId': post.authorId,
'timestamp': post.timestamp,
'userName': post.userName,
'userImage': post.userImage,
'idReview': post.idReview,
'experience': post.address,
'cSrateStars': post.cSrateStars,
'productName': post.productName,
'brand': post.brand,
'cost': post.cost,
'envioDiasRateStars': post.envioDiasRateStars,
'easyPurchaseRateStars': post.easyPurchaseRateStars,
'totalRate': post.totalRate,
'businessName': post.businessName,
'recomendation': post.recomendation,
'id': docref,
'videoLink': post.videoLink,
});
},
);
}

最佳答案

您可以通过执行以下操作在主页中生成documentID:

var randomDoc = await favRef
.document(widget.currentUserId)
.collection('favoritePost')
.document();

通过使用不带路径的document(),它会为你生成一个文档id,然后你可以这样做:

final docsref = await favRef
.document(widget.currentUserId)
.collection('favoritePost')
.document(randomDoc.documentID)
.setData(
{
'imageUrl': '',
'caption': '',
'likeCount': 0,
'authorId': '',
'timestamp': '',
'userName': '',
'userImage': '',
'id': '',
'idSecondPost': '',
'experience': '',
'cSrateStars': '',
'productName': '',
'brand': '',
'cost': '',
'envioDiasRateStars': '',
'easyPurchaseRateStars': '',
'totalRate': '',
'businessName': '',
'recomendation': '',
'videoLink': '',
'docId' : randomDoc.documentID
},
);

这样您就可以立即在主页中生成 id 并将其添加到 docId 字段中,而无需更新。

关于firebase - 如何使用 Flutter 将 documentID 保存在 Firebase 文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63303526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com