随时间变化的Firestore查询

时间:2019-03-14 03:17:13

标签: firebase flutter google-cloud-firestore

我正在这样向收藏夹添加文档。

void addToDb() {
collectionReference.add({
  'dateTime': FieldValue.serverTimestamp(),
});}

我正在尝试像这样在某个日期之后查询数据

Firestore.instance
                .collection('items')
                .orderBy('dateTime', descending: true).startAt([{'dateTime' : DateTime.parse('2019-03-13 16:49:42.044')}])
                .snapshots(),

将降序设置为true时,我会取回所有文档。 当我设置为false时,我什么也不会回来。 两者都不是预期结果。

我在堆栈上看到一些说法,将日期时间转换为毫秒或unix。但是我正在使用servertimestamp,因为我不能相信客户端写时间戳。知道我如何使用servertimestamp查询日期时间范围吗?

2 个答案:

答案 0 :(得分:0)

我无法真正解释为什么这样做,但这对我有用。

final startAtTimestamp = Timestamp.fromMillisecondsSinceEpoch(DateTime.parse('2019-03-13 16:49:42.044').millisecondsSinceEpoch);
Firestore.instance
                .collection('items')
                .orderBy('dateTime', descending: true).startAt([startAtTimestamp])
                .snapshots()

答案 1 :(得分:0)

你也可以做如下操作,

Firestore.instance
            .collection("driverListedRides")
            .where("uid", isEqualTo: widget.uid.toString())
            .where("status", isEqualTo: "active")
            .where("date",
                isGreaterThanOrEqualTo:
                    DateTime.now().toString().split(" ")[0].toString())
            .orderBy("date", descending: true)
            .orderBy("time", descending: false)