我希望能够在一小段时间内更新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的主要分支上。
答案 0 :(得分:2)
使用setInterval()
每X英里秒启动一次功能。
使用firebase.database.ref()
访问要更新的数据库节点。
使用.update()
更新数据库节点值。
使用firebase.database.ServerValue.TIMESTAMP
获取服务器时间。由于不同的时区,使用客户端时间戳是不安全的。
有了这个你可以编写你的功能。它应该看起来像这样
const servetTime = firebase.database.ServerValue.TIMESTAMP;
setInterval(() => {
database.ref('myNode').on('value',(snapshot) => {
snapshot.val() &&
const updatedDate = snapshot.val().storageTime ? snapshot.val().storageTime - serverTime : serverTime;
snapshot.ref().update({ storageTime: updatedDate })
});
}, 5000);
仅将此代码视为示例,而不是复制/粘贴解决方案。
希望它有所帮助。
答案 1 :(得分:0)
在轮询数据库时没有任何意义,而是告诉它你想要监听价值(变化)事件。
来自Read and Write Data on the Web
重要提示:每次更改数据时都会调用value事件 指定的数据库引用,包括对子项的更改。要限制 快照的大小,仅在所需的最低级别附加 看着变化。例如,将侦听器附加到根目录 不推荐您的数据库。以下示例演示了一个 社交博客应用程序从中检索帖子的星号 数据库:
var starCountRef = firebase.database().ref('posts/' + postId + '/starCount'); starCountRef.on('value', function(snapshot) { updateStarCount(postElement, snapshot.val()); });