通过“大于”比较两个Firestore时间戳

时间:2019-04-04 22:21:01

标签: firebase timestamp google-cloud-firestore

我正在尝试比较云函数中的两个时间戳。

不是通过“平等”(如here所述),而是通过“大于”。

我不知道问题出在哪里,但是我无法解决它。

这是我的代码,非常简单:

 const lastDayUnread = await admin.firestore()
     .collection('/unread')
     .where('last_message', '>', 'last_seen')
     .get()

我也尝试使用.seconds属性,但仍然没有:

.where('last_message.seconds', '>', 'last_seen.seconds')

如果我从JS客户端执行相同的查询,则它可以正常工作,并且控制台显示我的文档last_seen和last_message属性中存在一个Timestamp对象。

1 个答案:

答案 0 :(得分:0)

Cloud Firestore中的where子句的右侧必须是文字值。不支持查询其他字段的值。

典型的解决方法是使用last_message.seconds - last_seen.seconds存储一个附加字段,然后:

.where('delta_seconds', '>', 0)