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

我需要向 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 seconds

const daily_secs = 24 * 60 * 60 * 1000; // 24 hrs

const weekly_secs = 168 * 60 * 60 * 1000; // 1 week


exports.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.

        }

    });

}


泛舟湖上清波郎朗
浏览 135回答 3
3回答

犯罪嫌疑人X

ServerValue.TIMESTAMP不是可以进行数学计算的标准整数时间戳值。它是一个令牌或哨兵值,当服务器收到写入时会在服务器上进行解释。这就是它能够获取实际服务器的时间戳值的方式。唯一有意义的使用方法是作为写入时的子值。由于您在 Cloud Functions 中运行,因此内存中实际上有一个 Google 服务器时间戳值 - 在实际时钟中。谷歌的所有后端都有同步时钟,因此它们都是准确的。ServerValue.TIMESTAMP当您无法确定用户的设备具有准确的时钟时,您通常仅在客户端应用程序中使用。在您的情况下,ServerValue.TIMESTAMP您应该简单地采用Date.now()当前时间,而不是使用 。

斯蒂芬大帝

currentTimeStamp 后面需要一个右括号。const updatedSecs = new Date(currentTimeStamp).getTime() + ten_secs;

largeQ

我遇到了另一个getTime is not a function仍然不断出现的问题。我不得不改用.valueOf()。这是更新后的代码:const currentTimeStamp = Date.now(); // DougStevenson answerconst updatedSecs = currentTimeStamp.valueOf() + ten_secs;const updatedDay = currentTimeStamp.valueOf() + daily_secs;const updatedWeek = currentTimeStamp.valueOf() + weekly_secs;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript