【发布时间】:2020-10-17 16:26:18
【问题描述】:
我正在使用 firebase 开发 REST API,并且正在按日期查询一些数据。它在本地主机上工作正常,但部署后,它就不行了!我也在使用 momentjs 来帮助处理日期。
我的文档的日期字段是时间戳。
这是我的查询方式:
const documents = await admin.firestore()
.collection('orders')
.where('date', '>', moment('2020-06-23'))
.where('date', '<', moment('2020-06-24'))
.get()
我也用 Date() 而不是 momentjs 做了同样的事情
const documents = await admin.firestore()
.collection('orders')
.where('date', '>', new Date('Jun 23 2020'))
.where('date', '<', new Date('Jun 24 2020'))
.get()
它们都在 localhost 上运行良好,但部署后从第 23 天获取数据的唯一方法是在查询中通过第 24 天和第 25 天,如下所示:
const documents = await admin.firestore()
.collection('orders')
.where('date', '>', moment('2020-06-24'))
.where('date', '<', moment('2020-06-25'))
.get()
我的数据库中保存的部分数据:
我只想获取特定日期的数据,我做错了什么?
【问题讨论】:
-
当您说“它在 localhost 上运行良好”时,您的意思是查询在针对本地 Firestore 模拟器运行时可以正常工作吗?
-
正如我在您的其他问题中提到的,您需要显示您正在查询的源数据。在不知道您期望从实际数据中返回什么的情况下,我们无法查看您的查询是否确实在做正确的事情。请编辑问题以包含任何人都可以用来重现问题的足够信息。这可能涉及与您的查询匹配和不匹配的数据的屏幕截图。
-
@FrankvanPuffelen 是的,如果我运行 firebase deploy 并尝试它,结果会有所不同
-
@DougStevenson 我已经更新并添加了一些图片,希望对您有所帮助
-
感谢您的澄清。基于此,我认为这很可能是时区问题,因为您的本地计算机可能在与 Cloud Firestore(第二个屏幕截图中的 URC-3)不同的时区运行。考虑在构造数据时设置时区,以便基础值与数据库中存储的值相匹配。
标签: node.js firebase google-cloud-firestore google-cloud-functions