Javascript 每隔一段时间更新firebase条目
我希望能够每隔一分钟更新firebase条目中的某些值。我不知道如何做到这一点,但尝试了以下方法:Javascript 每隔一段时间更新firebase条目,javascript,firebase,firebase-realtime-database,momentjs,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 = childSn
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);
将此代码视为示例,而不是复制/粘贴解决方案
希望它有帮助。轮询数据库没有意义,而是告诉它您想要侦听值(更改)事件 从 重要提示:每次在服务器上更改数据时,都会调用value事件 指定的数据库引用,包括对子项的更改。限制 快照的大小,仅在所需的最低级别进行附加 观察变化。例如,将侦听器附加到 不建议使用您的数据库。下面的示例演示了一个 社交博客应用程序从中检索帖子的星级计数 数据库:
var starCountRef = firebase.database().ref('posts/' + postId + '/starCount');
starCountRef.on('value', function(snapshot) {
updateStarCount(postElement, snapshot.val());
});
我还想添加一个条件,仅当在常量定义中firebase“serverTime”而不是“ServeTime”中存在元素时才执行此操作。此外,在每次调用事件侦听器时,请使用
.once
而不是.on
来添加事件侦听器。