如何通过与 Flutter Cloud Firestore 插件中的日期进行比较来获取记录?

Posted

技术标签:

【中文标题】如何通过与 Flutter Cloud Firestore 插件中的日期进行比较来获取记录?【英文标题】:How to fetch records by comparing with date in flutter cloud firestore plugin? 【发布时间】:2018-11-12 18:49:03 【问题描述】:

在使用 firebase cloud firestore 存储我的所有文档的 Flutter 应用程序上工作。我的文档有一个 startDateTime 字段,格式如下...

我想获取所有 startDateTime 大于或等于当前日期的记录。这是我执行此操作的颤振代码...

Firestore.instance.collection("trips")
    .where("trip.createdByUID", isEqualTo: this.userDetails['id'])
    .where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now().toString() )
    .getDocuments().then((string) 
        print('Firestore response111: , $string.documents.length');

        string.documents.forEach((doc) => print("Firestore response222: $doc.data.toString()" ));
    )

但这不起作用。无法理解如何使用 isGreaterThanOrEqualTo 以便它能够工作。

需要一些指导。

【问题讨论】:

【参考方案1】:

只传递这个查询

.where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now())

由于 firebase 自动将 dart DateTime 对象转换为 Timestamp Firebase 对象。保存对象时也需要这样做。

如果对象类型是时间戳,您可以在右侧看到。

如果这不起作用,您可以在创建时以数字格式保存另一个对象。然后很容易比较。您可以像这样获得数字日期时间:

new DateTime.now().millisecondsSinceEpoch

【讨论】:

哦,伙计,我的大脑好像不在我身边。实际上,我也尝试了new DateTime.now(),但这没有用,愚蠢的问题是......我的firebase中没有任何startDateTime时间高于今天日期的文件。无论如何,感谢您的回复。 它适用于 android 但不适用于 ios。请帮忙。 @树 你在 iOS 上得到了什么?【参考方案2】:

我让它在 iOS 上运行。请检查下面的代码。

DateTime _now = DateTime.now();

return StreamBuilder<QuerySnapshot>(
  stream: _store
      .collection('rides')
      .orderBy('rideDate')
      .orderBy('rideType')
      .where('rideDate', isGreaterThan: _now)
      .snapshots(),

【讨论】:

【参考方案3】:

您可以使用 DateTime() 按天或按小时进行比较:

final response = await FirebaseFirestore.instance
   .collection('meetings')
   .where(
      'date',
      isGreaterThanOrEqualTo: DateTime(selectedDay.year, selectedDay.month, selectedDay.day)
   )
   .get();

【讨论】:

以上是关于如何通过与 Flutter Cloud Firestore 插件中的日期进行比较来获取记录?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter如何根据某个值从firebase对列表进行分组

Flutter Firebase Cloud Messaging 如何自动关闭/取消通知?

即使文档中缺少请求的字段,如何安全地从 cloud-firestore 获取数据?

在进行身份验证之前,如何使用 Flutter 从 Cloud Firestore 搜索和访问数据?

如何从 Cloud Firestore 中获取数据,其中 user.uid 等于 Flutter 中的文档 ID?

查询时如何在 Flutter (Dart) 中使用变量 Cloud Firestore