Flutter:按时间戳查询Firestore文档

时间:2020-09-08 08:24:07

标签: flutter google-cloud-firestore

我正在尝试通过时间戳字段(例如,开始日期和结束日期之间)查询Firestore文档。 时间戳字段返回类似Timestamp(seconds=1599170400, nanoseconds=0)的内容。

我的应用程序中有一个Unix时间戳(以秒为单位),我想将其与之比较(使用 isLessThan:),但是Firestore中的值显然在此Timestamp对象内。

我该如何比较这两个时间戳?

一种替代方法是查询所有文档,然后进行比较,但是我想在查询本身中过滤文档。

1 个答案:

答案 0 :(得分:1)

要将数据库中的Timestamp与一个毫秒数(自纪元以来)进行比较,可以基于该值创建一个Timestamp对象:

var timestamp = Timestamp.fromMillisecondsSinceEpoch(1599573193925);

然后您可以在查询中针对数据库中的值使用它:

Firestore.instance
.collection('items')
.orderBy('Timestamp', descending: true).startAt([timestamp])

或者(我通常的方法):

Firestore.instance
.collection('items')
.where("Timestamp", isGreaterThanOrEqualTo: timestamp)