如何访问Firebase中的每个文档ID?

zpgglvta  于 2023-01-09  发布在  其他
关注(0)|答案(2)|浏览(135)

在我的博客应用中,我尝试使用cloud firestore在flutter中实现评论系统。每个文档都是一篇文章,我尝试将评论作为子集合添加到每个文档中。我如何访问每个文档id以便访问子集合?
在这里,我试图打印下面的文档ID,但它显示错误NoSuchMethodError: 'id' method not found Receiver: null Arguments: []

final ref = await FirebaseFirestore.instance
                            .collection('blogs')
                            .add({
                              'title': titleController.text,
                              'body': myController.text,
                              'author': name,
                              'date': DateFormat('dd/MM/yyyy,hh:mm')
                                  .format(DateTime.now()),
                            })
                            .then((value) => successAlert(context))
                            .catchError((error) => 
                        errorAlert(context));
                        titleController.clear();
                        myController.clear();
                        print(ref.id);
                      }

这是我的Firestore数据库:

zynd9foi

zynd9foi1#

你需要访问博客里面的文档ID,访问它的集合,然后像这样添加你的数据...

await FirebaseFirestore.instance
                            .collection('blogs')
                            .doc(documentId) // you need to enter this document id
                            .collection('comments').add({
                              'title': titleController.text,
                              'body': myController.text,
                              'author': name,
                              'date': DateFormat('dd/MM/yyyy,hh:mm')
                                  .format(DateTime.now()),
                            })
xzabzqsa

xzabzqsa2#

当你没有文档ID时,Firebase提供get()命令,返回集合的内容,如下所示:

db.collection("cities").get().then((res) => print("Successfully completed"), onError: (e) => print("Error completing: $e"));

但我意识到你需要文档ID,所以要得到这个ID,你必须在插入一个帖子后存储ID,我有一个来自个人项目的例子:

await firestore.collection('item').add({
      'quantity': element.quantity,
      'product_id': element.product.productId,
    }).then((value) {
      /// Here you can access [value.id] to get this document id.
      /// Now you can save it in a list or a class instance. Just keep it.
    })

现在你可以使用文档id来更新文章,添加新的评论,比如this,更多的信息,我们有Firestore documentation with flutter code snipets

相关问题