node.js - 如何在查询中使用 firestore.FieldValue.serverTimestamp()

标签 node.js google-cloud-firestore

我想在 google cloud firestore 中创建一个查询来检索过去 10 小时内创建的数据,但我想使用服务器日期作为帐户的基础。

类似于:

this.afs.collection<any>("posts/", ref => {
  let query: firebase.firestore.CollectionReference | firebase.firestore.Query = ref;

  tenHoursAgo = firebase.firestore.FieldValue.serverTimestamp() - 10; 
  query = query.where('created', '>', tenHoursAgo);

  return query.orderBy('created');
}).snapshotChanges()

我该怎么做?感谢您的帮助。

最佳答案

您不能使用 FieldValue.serverTimestamp() 作为查询中的值。

两种可能的解决方法:

  1. 最简单的接近方法是使用客户端的本地当前时间戳:new Date()

  2. 更复杂的替代方案是让客户端写入一个FieldValue.serverTimestamp(),然后读回该值,并在查询中使用结果值。

    这将使您免受客户端时钟偏差的影响。这是否值得额外的复杂性由您决定。

关于node.js - 如何在查询中使用 firestore.FieldValue.serverTimestamp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55729204/

相关文章:

javascript - 为什么我在jade中找不到app.locals

node.js - pm2 没有在弹性 beantalk 上启动服务器

node.js - 如何将可选标志传递给我的 npm 包的依赖项?

reactjs - 使用 Firebase 和 React 的 useEffect 清理功能

node.js - 使用 Socket.IO 修复垃圾邮件服务器的方法?

javascript - 通过与 Mongoose 中的不同数组匹配来从嵌入数组中删除元素

firebase - 什么是 firebase/firestore 时区

python - 如何使用python中的where子句从firestore中的数组中删除元素

javascript - Firestore 更新单个字段但创建另一个节点

java - 这是从 Android Jetpack ViewModel 在 Firestore 中使用查询的正确方法吗?