每次用户当地时间的日期更改时执行特定功能

Execute a particular function every time the date changes in the user's local time

我正在用户存储中保存一个计数器编号。 我想使用此计数器向用户提供一些每天更改的内容。 所以每次计数器加 1 内容都会改变。 问题是时区差异。 无论如何 运行 一个函数,每天都会将这个计数器增加 1。我可以使用 setInterval() ,它是 NodeJs 库的一部分,但它不会是一个准确的 "daily" 更新所有用户。

User storage 仅当操作处于活动状态时,您作为开发人员才能使用。一旦操作关闭,此数据将不可用,因此您将无法异步更新该字段。如果您确实想要异步访问,我建议使用外部数据库并仅将数据库行 key 存储在用户的 userStorage 中。这样您就可以随时访问和修改数据。

setInterval 方法将 运行 定期运行,但可能无法按您想要的方式运行。当 运行 时间处于活动状态时,它仅 运行 提供功能。许多服务会在一段时间后关闭 运行 时间。 Cloud Functions,例如 运行 有时会在不使用时关闭。此外,Cloud Functions 可以在并行实例中 运行 多次,并行执行 setInterval 函数多次。这将使计数器递增的次数超出您的预期。

使用专用的 Cron 服务将有助于减少同时执行的数量,同时还可以确保 运行 需要时执行。

您无法在操作中直接访问用户的时区,这意味着您将无法确定 的结束时间。您可以每天更改内容,但它会有某种偏移量。为了解决这个问题,您可以有多个 cron 作业,运行 用于不同的用户群。

使用conv.user.locale字段,您可以导出他们的语言。 en-US 通常是为居住在美国的美国用户准备的。虽然这可能会导致奇怪的旅行行为,但您可以将用户分入特定的执行时间段。 运行 任务会在凌晨 1 点或凌晨 4 点过夜,他们可能不会注意到,但知道它会在一夜之间更新。

您可以使用 location helper 来更精确地获取用户的位置。这可能有点不必要,但您可以使用该值来确定他们的时区,然后导出该用户的 "midnight" 以放入正确的 Cron 存储桶。