Firebase orderByValue

时间:2017-11-05 19:11:03

标签: javascript reactjs firebase firebase-realtime-database

我有一个小型数据库,您可以输入体育运动员的名字,然后点击其名称旁边的图标进行投票或者投票。我试图让页面检测到投票已经发生(这看起来有效),然后根据大多数投票重新排序列到最少投票。

我的Firebase看起来如此:

players
    id (lots of letters/generated by firebase?)
    playerContent: "firstname lastname"
    votes: 1

    id
    playerContent: "differentfirstname differentlastname"
    votes: 2

    id
    playerContent: "thirdname thirdlast"
    votes: 3

以下是我最初引用我的数据库的方式:

this.database = this.app.database().ref().child('players');

以下是我一直在使用的大部分代码:

1.)
    this.database.on('child_added', snap => {
    previousPlayers.push({
    id: snap.key,
    playerContent: snap.val().playerContent,
    votes: snap.val().votes,
  })

2.)
    this.database.on("child_changed", function(snapshot) {
    var changedVote = snapshot.val();
    console.log("new value: " + changedVote.votes)
    });

3.)
    var votesRef = firebase.database().ref("votes");
    votesRef.orderByValue().on("child_changed", function(snapshot){
    snapshot.forEach(function(data) {
    console.log("The " + data.key + " votes are " + data.val());
  });
});  

    this.setState({
      players: previousPlayers
      })
     })
    }

在#2那里,我在浏览器检查窗口中得到即时反馈,说明向上或向下注册正在为每个玩家注册 - 但是我认为#3中有问题。它似乎没有改变我在屏幕上看到的顺序,即使我刷新页面。它始终按照最旧的顺序显示内容,最新的显示在底部。

提前致谢

0 个答案:

没有答案