计算Firestore Update中的时间戳差异

时间:2019-11-14 16:40:22

标签: javascript firebase google-cloud-firestore

在我的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) {
               ....;
            });

是否可以在查询中建立此持续时间?

1 个答案:

答案 0 :(得分:0)

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

或者,您不需要为查询的持续时间字段建立索引,只需让其他客户端在读取文档时显示日期匹配就可以显示数据。

请注意,使用时间戳进行日期数学运算时,Firestore中的时间戳字段既有秒,又有纳秒级。如果要保留纳秒精度,则除了做简单的减法运算外,还必须要小心。