【问题标题】:How to get values from Firestore in Flutter如何在 Flutter 中从 Firestore 获取值
【发布时间】:2020-08-26 03:20:08
【问题描述】:

我需要获取 Firestore 文档中的值,该文档有一个子集合。

向数据库添加数据

此外,我试图完成的是在 userPolls 集合上,我需要基于 userId 添加一个带有 Id 的文档,然后创建一个“dailyPolls”集合,其中包含一个带有Id 当前日期,但没有“/”,我将所有数据放在其中:

final CollectionReference userPollCollection =
      Firestore.instance.collection('userPolls');
Future setPoll(UserPoll userPoll) async {
    var dt = userPoll.pollDate.replaceAll('/', '');
    return await userPollCollection
        .document(userId)
        .collection('daillyPolls')
        .document(dt)
        .setData({
      'uid': userId,
      'pollDate': userPoll.pollDate,
      'status': userPoll.status,
      'statusCode': userPoll.statusCode
    });
  }

查询数据库中的数据

在检索数据时,我需要到达userPolls,然后获取带有Id 的文档,即userId,然后转到dailyPolls 的集合,然后获取带有@ 的文档987654332@ 基于当前日期,不带“/”,然后获取其中的数据。

 Future getPoll() async {
    final DateTime now = DateTime.now();
    final DateFormat formatter = DateFormat('yyyy/MM/dd');
    final String formatted = formatter.format(now);
    var pollDate = formatted;
    var dt = pollDate.replaceAll('/', '');

    var docRef = userPollCollection
        .document(userId)
        .collection('dailyPolls')
        .document(dt);

    docRef.get().then((onValue) {
      print(onValue.data);
    });
  }

红色方块是路径,蓝色是我需要的

我对平面数据库非常陌生。

【问题讨论】:

  • 我用 .documents 尝试了这段代码,但它不适用于我.. 应该是 .doc

标签: firebase flutter google-cloud-firestore


【解决方案1】:

我不确定您要使用哪些类,但这是我可以获取正确格式的日期的最简单方法:

final DateTime now = DateTime.now();
final DateFormat formatter = DateFormat('yyyy/MM/dd');
final String formatted = formatter.format(now);

print(formatted);

var docRef = userPollCollection
    .document(userId)
    .collection('dailyPolls')
    .document(formatted);

要获取状态字段,您可以:

docRef.get().then((onValue) {
  print(onValue.data().status);
});

如果您仍然有问题,请检查第一个 print 语句的输出,看看它的值是否与您在数据库中看到的相匹配。

【讨论】:

  • 对不起,如果我不清楚,先生。我想要得到的是文件20200826 的数据。我需要 'status' 属性,以便我可以将其与某些东西进行比较。
  • 我更新了我的答案以显示如何获取该特定字段。另见firebase.google.com/docs/firestore/query-data/…
  • 谢谢先生。我更改了保存数据的方式,以便更容易获得结果。但你的建议对我有帮助。
猜你喜欢
  • 1970-01-01
  • 2020-12-08
  • 2021-01-08
  • 2021-06-28
  • 2021-07-17
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多