【问题标题】:Filtering By Date Given Google Firestore Swift按给定 Google Firestore Swift 的日期过滤
【发布时间】:2019-05-20 05:38:52
【问题描述】:

目前,我正在将信息上传到 Google Firestore,并将上传带有用户指定日期的信息。例如,在用户上传之前,他们通过UIDatePicker() 选择一个日期。它以以下格式输出日期:Jan 19, 2018

现在当用户上传文档时,数据库中的一个字段设置为date,它将填充Jan 19, 2018

我的问题是如何有效地按日期查询所有上传的列表,从顶部的最近日期开始,底部的最新日期开始。

我的最终目标是创建一个集合视图,其中包含所有日期的列表,从最近的日期开始。

我不能根据用户上传的时间来执行此操作,因为用户可以上传前一天的信息。用户还可以在同一天将某些内容上传到数据库,在这种情况下,该日期将连续出现两次。

什么是最有效的方法?

我可以在 Firestore 中进行查询吗?还是我需要获取所有文档日期,并在应用程序中自己对它们进行排序?

任何指导都会很棒!

谢谢你,

【问题讨论】:

  • 到目前为止,Firestore 有 Timestamps,而不是 Date。你的文件是这样的吗?此外,UIDatePicker 返回一个Date,而不是你说的格式的String

标签: swift firebase google-cloud-firestore filtering querying


【解决方案1】:

您不能使用日期(即 2018 年 1 月 19 日)应用查询。唯一对您的情况有用的是将时间戳存储在 FireStore 中。您可以使用以下代码轻松地将日期转换为时间戳:

extension UIDate {
      var millisecondsSince1970:Int {
          return Int((self.timeIntervalSince1970 * 1000.0).rounded())
      }
}

Date().millisecondsSince1970 // 1476889390939

然后您可以应用 FireStore 以下查询根据时间戳获取记录

databaseRef.order(by: "timeStamp", descending: true)

【讨论】:

  • 简单得多,您可以使用Timestamp(date: startDate)Date 保存到Firestore。这需要import FirebaseFirestore
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2020-03-25
  • 2022-01-26
  • 2014-06-07
  • 2021-04-29
  • 2019-04-13
  • 1970-01-01
相关资源
最近更新 更多