firebase - Flutter中创建文档后返回新创建的Document ID

标签 firebase flutter dart google-cloud-firestore

首先,非常感谢您的宝贵时间和帮助。

我在类中定义了一个方法,用于将数据添加到 Firestore 数据库中,如下所示:

class DatabaseService {

Future<DocumentReference> addData() async {
    DocumentReference doc = await _userCollection.add({
      'firstName': 'Mickey',
      'lastName': 'Mouse',
      'age': 10,
      'languages': ['English'],
      'timestamp': FieldValue.serverTimestamp(),
    });
    return doc;
  }
}

当我点击有状态类中的凸起按钮来调用此方法时。它按预期工作得很好,并在 Firestore 数据库中创建了一个新文档。我希望 addData 方法返回新创建文档的文档 ID,但我不知道如何返回并显示文档 ID。

这是我的 onPressed 事件中的代码的样子:

onPressed: () {
                      Future<DocumentReference> doc =
                          DatabaseService().addData();
                      print(doc);
                    },

它只是在控制台中打印以下行:

Instance of 'Future<DocumentReference>'

当我尝试打印 id 属性时,出现编译错误。

print(doc.id);

我使用的是最新版本的 Firebase Firestore 软件包,如下所示:

  firebase_core: ^0.5.0
  firebase: ^7.3.0
  cloud_firestore: ^0.14.0+

最佳答案

您获得 Instance of 'Future<DocumentReference>' 的原因而不是值(value)在于它是一个Future。 Future 需要在它们具有值或错误之前等待。你应该有这样的东西

onPressed: () async {
  DocumentReference doc = await DatabaseService().addData();
  print(doc);
},

我强烈建议您阅读更多有关 asynchronous programming: futures, async, await 的内容。 。它会在未来为你省去很多麻烦,没有双关语的意思:)

关于firebase - Flutter中创建文档后返回新创建的Document ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782861/

相关文章:

android - 添加firebase_messaging插件后,Gradle构建失败

node.js - 我在服务或部署 Firebase 托管功能时遇到问题

flutter - 未调用 dispose 方法

Swift Firebase 将用户名字符串存储到 var

firebase - Flutter web - 无法加载网络图像

flutter - 按时间顺序对Firestore集合中的文档进行排序

flutter - Flutter-Openweathermap API调用错误-将参数传递给api调用不起作用

dart - 如何根据您在Dart中无法控制的流返回Future?

Firebase Functions 自定义域与单页应用程序

javascript - Firebase 计算父级的 num 个子级