为了账号安全,请及时绑定邮箱和手机立即绑定

如何向 firebase.database.ServerValue.TIMESTAMP 添加时间

如何向 firebase.database.ServerValue.TIMESTAMP 添加时间

泛舟湖上清波郎朗 2023-07-20 17:11:22
我需要向 admin.database.ServerValue.TIMESTAMP 添加时间,然后检索它。但是当我尝试添加额外的时间时,ServerValue.TIMESTAMP我收到错误:getTime 不是一个函数const functions = require('firebase-functions');const admin = require('firebase-admin');admin.initializeApp();const ten_secs = 10 * 1000; // 10 secondsconst daily_secs = 24 * 60 * 60 * 1000; // 24 hrsconst weekly_secs = 168 * 60 * 60 * 1000; // 1 weekexports.update = functions.https.onRequest((request, response) => {    const currentTimeStamp = admin.database.ServerValue.TIMESTAMP;    const updatedSecs = new Date(currentTimeStamp.getTime() + ten_secs); // should be saved in the db as milliseconds for later retrieve and calculations    const updatedDay = new Date(currentTimeStamp.getTime() + daily_secs); // should be saved in the db as milliseconds for later retrieve and calculations    const updatedWeek = new Date(currentTimeStamp.getTime() + weekly_secs); // should be saved in the db as milliseconds for later retrieve and calculations    console.log("updatedSecs: " + updatedSecs + " | updatedDay: " + updatedDay + " | updatedWeek: " + updatedWeek);    const ref = admin.database().ref('schedule').child("scheduleId_123").child("my_uid")    ref.once('value', snapshot => {        if (!snapshot.exists()) {            return ref.set({ "updatedSecs": updatedSecs, "updatedDay": updatedDay, "updatedWeek": updatedWeek });        } else {            const retrieved_updatedSecs = snapshot.child("updatedSecs").val();            const retrieved_updatedDay = snapshot.child("updatedDay").val();            const retrieved_updatedWeek = snapshot.child("updatedWeek").val();            const currentTime = Date.now();            // do some calculations with the above values and currentTime.        }    });}
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

ServerValue.TIMESTAMP不是可以进行数学计算的标准整数时间戳值。它是一个令牌或哨兵值,当服务器收到写入时会在服务器上进行解释。这就是它能够获取实际服务器的时间戳值的方式。唯一有意义的使用方法是作为写入时的子值。

由于您在 Cloud Functions 中运行,因此内存中实际上有一个 Google 服务器时间戳值 - 在实际时钟中。谷歌的所有后端都有同步时钟,因此它们都是准确的。ServerValue.TIMESTAMP当您无法确定用户的设备具有准确的时钟时,您通常仅在客户端应用程序中使用。

在您的情况下,ServerValue.TIMESTAMP您应该简单地采用Date.now()当前时间,而不是使用 。


查看完整回答
反对 回复 2023-07-20
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

currentTimeStamp 后面需要一个右括号。

const updatedSecs = new Date(currentTimeStamp).getTime() + ten_secs;


查看完整回答
反对 回复 2023-07-20
?
largeQ

TA贡献2039条经验 获得超7个赞

我遇到了另一个getTime is not a function仍然不断出现的问题。我不得不改用.valueOf()。


这是更新后的代码:


const currentTimeStamp = Date.now(); // DougStevenson answer


const updatedSecs = currentTimeStamp.valueOf() + ten_secs;


const updatedDay = currentTimeStamp.valueOf() + daily_secs;


const updatedWeek = currentTimeStamp.valueOf() + weekly_secs;


查看完整回答
反对 回复 2023-07-20
  • 3 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信