第二代云函数中有没有办法在云存储触发器内设置不同的时区?
我有一个生成和优化图像的触发器,这是一个漫长的过程,但我会向您分享与这篇文章相关的内容。 以这个示例代码为例
export const resizeImage = onObjectFinalized({
region: 'southamerica-east1'
}, async (event: CloudEvent<StorageObjectData>) => {
const fileBucket = event.data.bucket;
const filePath = event.data.name as string;
const contentType = event.data.contentType as string;
try {
/* Long process that generates a new image, stores the new image,
deletes the original and saves its download url to Firestore... */
} catch(e) {
// If error, save it in Firestore.
const errorDocData = {
timestamp: Date.now(),
errorCode: e.errorCode || '',
stack: e.stack || '',
context: { filePath: event.data.name, bucket: event.data.bucket },
message: e.message
}
const colRef = firestore.collection(`Procesos/ProcesoOptimizarImagen/Errors`)
await colRef.add(errorDocData)
}
})
相关的是我想在发生错误时存储日期时间。我想将此云功能的时区设置为“阿根廷/布宜诺斯艾利斯”,因为这是系统使用的地方。
另一个相关信息是我有兴趣按日期时间排序查询这些错误,例如,应用程序将首先获取最近发送的错误。
Firestore 时间戳没有时区。 它们只是描述自 UTC unix 纪元以来的时间量的两个数字。 JavaScript Date 对象非常相似——它们只是一个代表时间点的数字。 重复一遍:不涉及日期或时间戳的创建、计算或排序 - 您看到的任何时区都只是使用时区作为参考点的该时间点的渲染。
如果打印时间戳(或日期对象)并看到时区,这只是本地计算机时钟对其配置的时区的解释。 它与代表时间点的实际数字无关。
即使您可以更改 Cloud Functions 实例的时区(您不能),也不会更改您正在使用的 Date 或 Timestamp 对象的任何内容。 您的查询将以完全相同的方式工作。
另请参阅: