【问题标题】:do maths with firebase timestamp用firebase时间戳做数学
【发布时间】:2024-01-22 05:04:01
【问题描述】:

我在版本 9 中使用 serverTimestamp() 保存 Firebase 服务器时间戳。然后我需要做一些数学运算,例如添加 3000 毫秒。然而,似乎 serverTimestamp() reurns 一个对象,因此简单地添加 3000 是不可能的。到目前为止,我已经处理了将时间戳保存在我的数据库中然后读取它的问题。这种方式它可以工作,但它涉及数据库中的额外读写操作,只是为了在 JS 上获取这个值。
有没有办法在 JS 上直接将 serverTimestamp 对象转换为数字,而不涉及到数据库的读写?


代码不工作(不能将 3000 加到一个对象中):

var NewserverTime = serverTimestamp() + 3000;

代码可以运行,但是在数据库中读取和写入的额外步骤似乎不是很优雅...

 set(ref(db, "/dabasepath"), {
    ServerTime: serverTimestamp()   
});

const firebaseRef = ref(db, "/databasepath");
onValue(firebaseRef, (snapshot) => {
          NewServerTime = snapshot.val() + 3000;  
 });

【问题讨论】:

    标签: javascript firebase firebase-realtime-database timestamp


    【解决方案1】:

    没有办法通过单个写入操作来存储和转换服务器端时间戳。要确定服务器端时间戳,您始终必须先写后读。

    我常用的方法是将时间戳和偏移量存储为单独的字段,然后在查询中检查这两个字段,或者计算一个从 Cloud Functions 自动更新的“时间戳加偏移量”字段(这只会导致额外的写)。

    【讨论】: