如何在 Cloud Storage 触发器中设置时区? (适用于 Firebase 的第二代云功能)

问题描述 投票:0回答:1

第二代云函数中有没有办法在云存储触发器内设置不同的时区?

我有一个生成和优化图像的触发器,这是一个漫长的过程,但我会向您分享与这篇文章相关的内容。 以这个示例代码为例

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)
}
})

相关的是我想在发生错误时存储日期时间。我想将此云功能的时区设置为“阿根廷/布宜诺斯艾利斯”,因为这是系统使用的地方。

另一个相关信息是我有兴趣按日期时间排序查询这些错误,例如,应用程序将首先获取最近发送的错误。

node.js firebase google-cloud-functions
1个回答
0
投票

Firestore 时间戳没有时区。 它们只是描述自 UTC unix 纪元以来的时间量的两个数字。 JavaScript Date 对象非常相似——它们只是一个代表时间点的数字。 重复一遍:不涉及日期或时间戳的创建、计算或排序 - 您看到的任何时区都只是使用时区作为参考点的该时间点的渲染

如果打印时间戳(或日期对象)并看到时区,这只是本地计算机时钟对其配置的时区的解释。 它与代表时间点的实际数字无关。

即使您可以更改 Cloud Functions 实例的时区(您不能),也不会更改您正在使用的 Date 或 Timestamp 对象的任何内容。 您的查询将以完全相同的方式工作。

另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.