如何在Firestore中按日期正确执行查询?

时间:2018-09-07 11:40:40

标签: node.js firebase google-cloud-firestore google-cloud-functions

我正在尝试进行cronjob来删除使用http触发器传递的事件。今天是9月7日,因此9月5日(6fqmROcWD7K1pTFtXmJJ)的事件(如下图)应在查询快照中捕获。但文档长度为零

enter image description here

这是我使用的代码:

export const cronJobDeletingPastEvents = functions.https.onRequest(async (request,response) => {

        const dateNow = Date.now()
        const pastEventsSnapshot = await admin.firestore().collection("events").where('dateTimeFinish', '<', dateNow).get()
        console.log(pastEventsSnapshot.docs.length) // <---- the result is zero

// perform some actions ....

}

我不知道这里出了什么问题,但是我想这是因为dateNow是数字,但是firestore中的字段dateTimeFinishTimestamp对象。但我不知道该如何解决

1 个答案:

答案 0 :(得分:3)

以下将起作用:

const dateNow = new Date()

const pastEventsSnapshot = await admin.firestore().collection("events").where('dateTimeFinish', '<', dateNow).get()
...

以下内容也可以工作:

const dateNow = new Date('2018-09-07T01:25:54.000Z')
const dateNow = new Date('2018-09-07')