我有一个简单的程序,您可以发布/接受游戏,然后报告分数。我有一个更新分数的问题,因为存储在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,而不会添加。
答案 0 :(得分:2)
您无法在update()
方法中对字段值进行某些操作。因此,您应该首先从数据库中读取该值,然后使用新值更新该记录。
最好的方法是使用transaction进行此类操作,该操作将自动执行读/写操作,此外,请确保“与其他客户端在同一位置写入相同位置没有冲突时间”。
然后您将执行以下操作:
var selfRef = firebase.database().ref("users/" + selfKey + "/tScore");
selfRef.transaction(function(currentValue) {
return currentValue + 3;
});