【问题标题】:Calculate timestamp difference in Firestore Update计算 Firestore 更新中的时间戳差异
【发布时间】:2020-03-10 16:53:00
【问题描述】:

在我的 Cloud Firestore 数据库中,我有一组文档,包括创建的时间戳。

Env.docRef.collection('collect').add({
            name: this.name,
            active: true,
            created: firebase.firestore.FieldValue.serverTimestamp()
    }).then(function(docRef) {
           ......;
    }.bind(this));

当我需要更新/禁用一个文档时,我想创建一个持续时间字段来表示自文档创建以来的时间。

 Env.docRef.collection('collect').doc(this.id).update({
                active: false,
                ended: firebase.firestore.FieldValue.serverTimestamp(),
                duration : ???
            }).then(function() {
                ....;
            })
            .catch(function(error) {
               ....;
            });

是否有任何选项可以在查询中构建此持续时间?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:

    没有像服务器时间戳那样简单的持续时间令牌。如果您想对创建和结束字段都使用服务器时间戳,您需要做的是在文档完全写入后读取文档,对时间戳进行数学运算,然后将持续时间写回文档中。

    或者,您不需要对该持续时间字段进行索引以进行查询,您可以简单地让其他客户端在读取文档时进行日期匹配以显示数据。

    请注意,在使用时间戳进行日期数学运算时,Firestore 中的时间戳同时存在秒和纳秒字段。如果您想保持纳秒级精度,则必须小心做的不仅仅是简单的减法。

    【讨论】:

    • 谢谢 Doug,我将在客户端处理本地对象中的持续时间属性,以便在加载时一劳永逸地计算结束文档的持续时间。或者以后可能是一个云函数来计算文档结束的持续时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多