【问题标题】:What is the recommended way of saving durations in Firestore?在 Firestore 中保存持续时间的推荐方法是什么?
【发布时间】:2022-02-04 14:48:35
【问题描述】:

我正在尝试在 Firestore 中保存持续时间。例如,用户已经进行了 4 分 44 秒的锻炼。此信息的推荐数据类型是什么?

如果 Firestore 增量运算符可以在使用的数据类型上工作,那就太好了。我考虑过使用Timestamp,但在Firebase SDK 中,increment 方法需要一个数字,而Timestamp 不是数字。

【问题讨论】:

    标签: firebase google-cloud-firestore duration


    【解决方案1】:

    在 Firestore 中保存持续时间的推荐方法是什么?

    因为您在谈论持续时间,所以解决方案是将其存储为数字,特别是 Integer,即 supported data-type。在您的示例中,4 分 44 秒将存储为:

    284
    

    这是因为 4*60 + 44 = 284。

    如果要取回小时数和分钟数,只需逆向上述算法即可。

    如果 Firestore 增量运算符可以在使用的数据类型上工作,那就太好了。

    Firestore 已经提供了这样的选项。例如,如果您想在现有持续时间上增加一小时,您可以使用:

    FieldValue.increment(3600) // 60 * 60
    

    如果你想减少一个小时,只需使用:

    FieldValue.increment(-3600)
    

    我考虑过使用时间戳

    时间戳不是持续时间。 Firestore 时间戳包含小至纳秒的时间单位。因此 Timestamp 对象包含年、月、日、小时、分钟、秒、毫秒和纳秒。这不会以任何方式解决您的问题。

    【讨论】:

    • 您可能想用 FieldValue.increment(60* 60) 修复您的答案,因为持续时间以秒为单位存储。所以 1 小时实际上是 3600 秒。
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 2015-02-13
    • 1970-01-01
    • 2011-01-20
    • 2015-12-11
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多