firebase Flutter:从云firestore访问文档ID时无法读取未定义的属性(阅读“id”)[重复]

yks3o0rb  于 2023-01-09  发布在  Flutter
关注(0)|答案(2)|浏览(108)
    • 此问题在此处已有答案**:

How can I access each document id in Firebase?(2个答案)
2天前关闭。
我想在firebase中获取我的博客集合的文档ID。我想用id方法访问它,但是显示错误Cannot read properties of undefined (reading 'id')。我怎样才能访问文档ID?
这是我如何尝试打印文档id print(docRef.id);,但得到错误。我的代码有什么问题?

DocumentReference docRef =
                            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));

                       print(docRef.id);

                        titleController.clear();
                        myController.clear();
                      }
rggaifut

rggaifut1#

那么,当你使用then时,试试这个:

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) {
                             print(value.id); // do it here
                             successAlert(context);
                             })
                                .catchError((error) => errorAlert(context));
63lcw9qa

63lcw9qa2#

如果你想在FirebaseFirestore方法之后得到数据,你需要使用这个方法而不是使用then方法:

DocumentReference docRef = await FirebaseFirestore.instance .collection('blogs').add({
    'title': titleController.text,
    'body': myController.text,
    'author': name,
    'date': DateFormat('dd/MM/yyyy,hh:mm').format(DateTime.now()),})
   .catchError((error) => errorAlert(context));

successAlert(context)
print(docRef.id);
titleController.clear();
myController.clear();

当你使用then来获取async的值时,你只能在then中得到结果,而不能在then之后访问它。

相关问题