仅在Firebase中检索一次数据

时间:2016-09-23 15:02:33

标签: javascript firebase firebase-realtime-database nosql

我有一个带有firebase的实时数据库,我使用以下代码连接到数据库并从中获取一些数据。

window.onload = function(){
var databaseWebsites = firebase.database().ref('/websites').orderByChild('votes');
console.log(databaseWebsites);
databaseWebsites.on('value', function(snapshot) {
  snapshot.forEach(function(childSnapshot) {

      var webTemp = document.getElementById(childSnapshot.val().id);
      webTemp.style.order = order;
      var webText = webTemp.getElementsByClassName('likeText');
      webText[0].innerHTML = childSnapshot.val().votes;
      order--;
  });

  order = 0;
});

它按顺序获取所有数据并正确使用它。

问题是,我不希望在用户刷新页面之前更新前端的数据。该系统是一个按投票价值排序的投票系统,如果它不断更新,那将是一个糟糕的用户体验。

任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:9)

on更改为once,Firebase on会侦听数据库节点中的更改并发送回复。

databaseWebsites.on('value', function(snapshot) {

databaseWebsites.once('value', function(snapshot) {

摘自Firebase文档

  

每次在指定的位置更改数据时都会调用value事件   数据库引用,包括对子项的更改。限制大小   您的快照,仅在观看所需的最低级别附加   变化。

Visit this url to read more

答案 1 :(得分:0)

接受的响应不正确(可能已经过时?),因为once()需要添加then()

实际上是

databaseWebsites.once('value').then(function(snapshot) {}

替换

databaseWebsites.on('value', function(snapshot) {}