通过“大于”比较两个 Firestore 时间戳 [重复]

Posted

技术标签:

【中文标题】通过“大于”比较两个 Firestore 时间戳 [重复]【英文标题】:Compare two Firestore Timestamps by "greater than" [duplicate] 【发布时间】:2019-08-26 18:55:23 【问题描述】:

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

不是“平等”(如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 对象。

【问题讨论】:

为什么如果您使用时间戳,您会将其用作对象“last_message.seconds”? 【参考方案1】:

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

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

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

【讨论】:

我刚刚发现我之前回答过这个问题,所以我将问题作为***.com/questions/49240872/…的副本关闭了 谢谢。我不知道这种行为。

以上是关于通过“大于”比较两个 Firestore 时间戳 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中显示两个 Firestore 时间戳值之间的差异

Flutter:按时间戳查询 Firestore 文档

Firestore 规则使用 Flutter 客户端验证时间戳

比较 ASP.NET 中的两个时间列

如何将具有时间戳字段的firestore doc数据转换为通过Freezed dart包生成的数据类?

如何快速解码来自 Firebase Firestore 的时间戳