javascript - 将日期对象转换为 Firestore 时间戳

标签 javascript firebase google-cloud-firestore

我正在尝试将日期对象转换为 Firestore 时间戳。

var dateOBJ = new Date(); 
var timeStamp = new firebase.firestore.Timestamp(dateOBJ);

这给了我一个错误:

Uncaught Error: Timestamp seconds out of range: Sun Dec 09 2018 11:37:05 GMT+0100

我尝试首先使用 .getTime()/1000 将日期对象转换为秒,但它仍然超出范围。

时间戳将是网址的到期日期,因此我需要为其添加一些时间。

最佳答案

在 Cloud Firestore 中设置日期字段的方法有两种:

  1. 您可以为该字段指定一个日期值,在这种情况下,您可以完全确定写入的日期。
  2. 您指定 firebase.firestore.FieldValue.serverTimestamp(),在这种情况下,服务器会写入当前日期。

API 中无法组合这两个选项,您只能使用其中之一。

既然您评论说您想要存储时间戳和偏移量,这也是我要存储的内容:

  • 让服务器使用 firebase.firestore.FieldValue.serverTimestamp() 填充的 timestamp 字段。
  • offset 字段,您可以使用以天/小时为单位的偏移量从应用中填充该字段。

这样您就可以通过组合这两个字段来重新构建有效的过期时间戳。

<小时/>

您甚至可以添加第三个字段来存储过期时间戳,但这需要额外的写入操作。我通常会在 Cloud Functions 中执行此操作,以确保您完全控制该领域并且客户无法欺骗它。如果您不在 Cloud Functions 中执行此操作,请考虑编写安全规则来验证计算字段是否确实是该计算的结果。

关于javascript - 将日期对象转换为 Firestore 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691606/

相关文章:

javascript - 正则表达式 JavaScript

ios - Admob 广告与 Firebase 集成问题

swift - firebase 数据库连接中的错误处理

reactjs - Firebase firestore onSnapshot 在 useEffect 中无法正常工作

javascript - 从服务器端解析 json 对象

javascript - 等待 promise 在不同的 Controller 中得到解决

javascript - 无法从 Firebase 数据库 Node.js/JavaScript 获取数据

Firebase 部署功能 -- 非交互式

node.js - 如何在 Cloud Function for Firebase 中执行查询并检索特定属性

java - 使用 javascript 检索 GSM 小区 ID、mcc、mnc