Javascript Firestore服务器时间戳+;24小时
我正在实现一个定时云功能,删除过期的文档 我在GCF中使用24小时TTL上传内容的做法是:Javascript Firestore服务器时间戳+;24小时,javascript,firebase,date,google-cloud-firestore,google-cloud-functions,Javascript,Firebase,Date,Google Cloud Firestore,Google Cloud Functions,我正在实现一个定时云功能,删除过期的文档 我在GCF中使用24小时TTL上传内容的做法是: 获取服务器时间戳 计算“expiresAt”日期(类似于new date().addHours(24)) 在谷歌云函数中使用这样的服务器时间戳获取“expiresAt”是正确的方法吗 Date.prototype.addHours = function(hours) { this.setTime(this.getHours() + hours); return this; }
Date.prototype.addHours = function(hours) {
this.setTime(this.getHours() + hours);
return this;
}
...
const date = admin.firestore.FieldValue.serverTimestamp();
const expiresAt = date.toDate().addHours(24);
另外,如果expiresAt是一个日期对象,它在存储时会自动转换为Firestore时间戳吗
非常感谢。您无法真正“获取”Firestore服务器时间戳admin.firestore.FieldValue.serverTimestamp()
返回一个静态令牌值对象,而不是日期。这些令牌在写入时在Firestore服务器上进行评估
因为您已经在Google后端的云函数中运行代码,所以您可以使用JavaScript计算的当前时间。它将与Firestore中的当前时间相同,但您可以对其进行计算
const now = Date.now()
const expiresAt = new Date(now + 24*60*60*1000)
您无法真正“获取”Firestore服务器时间戳admin.firestore.FieldValue.serverTimestamp()
返回一个静态令牌值对象,而不是日期。这些令牌在写入时在Firestore服务器上进行评估
因为您已经在Google后端的云函数中运行代码,所以您可以使用JavaScript计算的当前时间。它将与Firestore中的当前时间相同,但您可以对其进行计算
const now = Date.now()
const expiresAt = new Date(now + 24*60*60*1000)
如果时间戳是UTC,则添加24小时是可以的:
新日期(Date.now()+8.64e7)
,因为在ECMAScript中,UTC天数始终正好是24小时。这不适用于本地时间戳,因为由于DST和历史偏移量的变化,天数并不总是24小时长。在这种情况下,使用let d=new Date();d、 setDate(d.getDate()+1)
。如果时间戳是UTC,那么添加24小时是可以的:新日期(Date.now()+8.64e7)
,因为在ECMAScript中,UTC天数总是正好24小时。这不适用于本地时间戳,因为由于DST和历史偏移量的变化,天数并不总是24小时长。在这种情况下,使用let d=new Date();d、 setDate(d.getDate()+1)
。这就像一个符咒!这很有魅力!