【问题标题】:Retrieve data in Firebase exactly once在 Firebase 中仅检索一次数据
【发布时间】:2018-12-11 18:33:10
【问题描述】:

我有一个带有 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;
});

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

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

我们将不胜感激。

谢谢

【问题讨论】:

    标签: javascript firebase firebase-realtime-database nosql


    【解决方案1】:

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

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

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

    Firebase 文档摘录

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

    Visit this url to read more

    【讨论】:

      【解决方案2】:

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

      其实是

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

      替换

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多