javascript - 定期更新 firebase 条目

标签 javascript firebase firebase-realtime-database momentjs

我希望能够每隔一分钟更新一个 firebase 条目中的某些值。我不确定该怎么做,但尝试了以下方法:

var interval = setInterval(function(){
  database.ref().on('value',function(snapshot){
    snapshot.forEach(function(childSnapshot) {
        var item = childSnapshot.val();
        item.key = childSnapshot.key;
        database.ref(item.key).update({ item.trainTimeLeft: moment(item.trainFrequency).subtract(moment(moment(Date.now())).diff(item.trainTimeStamp,"minutes"),"minutes") });

    });
  });

},60000);

我正在使用 moment.js 处理时差(我正在尝试更新火车时刻表)。所有条目都在 firebase 的主分支上。

最佳答案

使用 setInterval() 每隔 X 英里秒触发一次函数。

使用 firebase.database.ref() 访问您要更新的数据库节点。

使用.update()更新数据库节点值。

使用 firebase.database.ServerValue.TIMESTAMP 获取服务器时间。由于时区不同,使用客户端时间戳并不安全。

有了这个你就可以写你的函数了。它应该看起来像这样

const serverTime = firebase.database.ServerValue.TIMESTAMP;
setInterval(() => {
  database.ref('myNode').once('value',(snapshot) => {
    const updatedDate = snapshot.val() && snapshot.val().storageTime ? snapshot.val().storageTime - serverTime : serverTime;
    snapshot.ref().update({ storageTime: updatedDate })
  });
}, 5000);

将此代码视为示例,而不是复制/粘贴解决方案。

希望对您有所帮助。

关于javascript - 定期更新 firebase 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250375/

相关文章:

javascript - Angular 2 的 IE 错误

firebase - Firebase 的 Cloud Functions 被多次调用

javascript - 推送时获取 Firebase UID,然后在 Java 中使用给定的 UID 再次推送

ios - 激活离线模式时,Core Data 相对于 Firebase 实时数据库有哪些优势?

java - 如何检查 Firebase 应用程序是否已在 Android 上初始化

javascript - 占位符能否仅用于 Firebase 中的数据库事件而不用于查询?

javascript - 在运行单元测试时如何将 React 添加为全局变量?

javascript - Web 应用程序 - 将 Javascript 变量传输到 MySQL (JAVA)

javascript - Angular 2 - 替代 $scope.$apply?

android - 如何在 android 中使用 firebase 获取推送通知的设备 ID