我正在尝试将日期对象转换为 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 中设置日期字段的方法有两种:
- 您可以为该字段指定一个
日期
值,在这种情况下,您可以完全确定写入的日期。 - 您指定
firebase.firestore.FieldValue.serverTimestamp()
,在这种情况下,服务器会写入当前日期。
API 中无法组合这两个选项,您只能使用其中之一。
既然您评论说您想要存储时间戳和偏移量,这也是我要存储的内容:
- 让服务器使用
firebase.firestore.FieldValue.serverTimestamp()
填充的timestamp
字段。 offset
字段,您可以使用以天/小时为单位的偏移量从应用中填充该字段。
这样您就可以通过组合这两个字段来重新构建有效的过期时间戳。
<小时/>您甚至可以添加第三个字段来存储过期时间戳,但这需要额外的写入操作。我通常会在 Cloud Functions 中执行此操作,以确保您完全控制该领域并且客户无法欺骗它。如果您不在 Cloud Functions 中执行此操作,请考虑编写安全规则来验证计算字段是否确实是该计算的结果。
关于javascript - 将日期对象转换为 Firestore 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691606/