gpt4 book ai didi

javascript - 在快照之后操作 Firebase 元素

转载 作者:行者123 更新时间:2023-11-30 14:55:56 25 4
gpt4 key购买 nike

我有一个函数,它会在单击搜索表单上的按钮时被调用。我们得到字符串并检查它以确保它只是字母。然后我们检查玩家的名字是否已经在数据库中,如果没有,我们添加他。如果他在数据库中,我们转到语句的 else 部分。这工作正常——但在我的其他领域,当我们确定我们知道数据库中有一个具有完全相同名称的玩家时,我想为该玩家操纵数据库中的一个特征.具体来说,将玩家投票计数加 1。

writePlayer(newPlayerContent){
if (/^[a-zA-Z\s]*$/.test(this.state.newPlayerContent)) {
this.checkIfUserExists(this.state.newPlayerContent);

if(this.state.duplicate !== true){
this.props.addPlayer(this.state.newPlayerContent);
this.setState({
newPlayerContent: '',
})
}
else{
var playersRef = firebase.database().ref();
playersRef.child('players').orderByChild("playerContent").equalTo(this.state.newPlayerContent).once("value",snapshot => {
const userData = snapshot.val();
console.log(userData)
})
}
}
else {
console.log("Non-letter character found in: " + this.state.newPlayerContent)
}

}

当我这样做时,console.log(userData) 我正在获取我想要操纵的特定播放器的相关信息 -- 例如

-KytHrvt8R1DkY0E4Fho: {playerContent: "Test", rank: 0, votes: 0}

我想在 userData 中对播放器进行投票++。我只是不知道要在我的 else 语句中添加什么来更改该字段数据。

我的 Firebase 布局如下:

players
playerContent: "Test"
rank: 0
votes: 0

最佳答案

试试这个

else{
var playersRef = firebase.database().ref();
playersRef.child('players').orderByChild("playerContent").equalTo(this.state.newPlayerContent).once("value",snapshot => {
snapshot.forEach(child => {
const data = child.val();
const key = child.key
//set the vote count
playersRef.child('players/'+key).update({
votes: data.votes + 1;
});
});
})
}

您需要循环遍历数据以获得实际结果,然后使用键指向所需的播放器并设置其值。希望这会有所帮助。

关于javascript - 在快照之后操作 Firebase 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47280900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com