React / Firebase保存并访问值

时间:2017-10-30 20:54:34

标签: reactjs firebase

我对React非常陌生,我正在建立一个投票网络应用程序,允许用户输入某人的姓名并将其添加到页面上。一旦他们在页面上,人名旁边有两个图标,一个upvote和downvote。我看到人们被发布到firebase并看到我的投票元素设置为0,这是我手动完成的,但我不确定我是否正在访问它或影响对该变量的更改所有,因为我在Firebase上看不到它的变化。

将此人添加到firebase:

addPlayer(player){
this.database.push().set({ playerContent: player, votes: 0});
}

就像我说的那样,当我添加一个人时,上面的这个信息会立即显示在Firebase上。在它所说的人投票:0。然后我将内容添加到页面:

render(props){
    return(
        <div className="player fade-in">
            <span className="upbtn">
            x
            </span>
            <p className="playerContent">{ this.playerContent }</p>
            <span className="downbtn" 
            onClick={() => this.handleDownvote(this.playerId)}>
            &times;
            </span>

        </div>
    )
}

这是handleDownVote:

    handleDownvote(id){
    this.props.downvotePlayer(id)
}

功能:

downvotePlayer(playerId){
this.database.child(playerId).votes--;
}

如果需要其他代码,我将链接存储库

1 个答案:

答案 0 :(得分:1)

您不会影响数据。您应该使用事务,因为它们可以防止许多用户同时访问时的数据丢失/损坏。试试这个:

downvotePlayer(playerId){
    this.database.child(playerId).transaction(function (player) {
        if (player) {
            player.votes--
        }
        return player;
    });
}