我有一个简单的程序,您可以发布/接受游戏,然后报告分数。我有一个更新分数的问题,因为存储在firebase中的信息存储为字符串。如何将我的分数作为整数添加?
if (selfScore > oppScore) {
var ref = new Firebase('taken out');
var selfRef = firebase.database().ref("users/" + (selfKey));
selfRef.update({
"tScore": ("tScore" + 3)
});
}
理想情况下,分数将取先前的分数并加3,但事实并非如此。我是Firebase的新手,所以如果这很明显,那就不好了。进行修改以弄清楚何时删除tscore并只有tScore:+3只是将tScore更改为3,而没有添加。
最佳答案
您不能在update()
方法中对字段值进行某些操作。因此,您应该首先从数据库中读取值,然后使用新值更新记录。
最好的方法是使用transaction进行此类操作,该操作将自动执行读/写操作,此外,请确保“与其他客户端同时写入同一位置没有冲突”。
然后,您将执行以下操作:
var selfRef = firebase.database().ref("users/" + selfKey + "/tScore");
selfRef.transaction(function(currentValue) {
return currentValue + 3;
});