我正在尝试更新我的firebase数据库中的计数器记录,我可以在数据嵌套时更新,但是,如果它位于顶层,我无法更新“total”的值。
JSON:
{
"accounts" : {
"-KRPSyO4B48IpBnHBTYg" : {
"dateCreated" : "",
"email" : "",
"provider" : "",
"userId" : ""
}
},
"products" : {
"-KUKRafaNurpFhGF4jQa" : {
"dateCreated" : "",
"description" : "",
"imageUrl" : "",
"lastUpdated" : "",
"name" : "",
"postCount" : -1,
"tags" : [ "Tag" ],
"url" : "",
"viewCount" : 10,
}
},
"total" : 1
}
这简单地将“total”的值替换为100,但是每次发生某事时我都想添加1。我意识到在这里我不是首先检索“total”的值,这是我问题的一部分,我也很难获得这个值..
firebase.database().ref().update({
total: + 100
});
我的其他计数器看起来像这样,并且很好地更新了其他嵌套值:
firebase.database().ref('products/' + product.id).update({
postCount: product.postCount + 1,
viewCount: product.viewCount + 1
});
提前感谢您的帮助!
答案 0 :(得分:1)
每当您递增此类属性的值时,您应该使用事务。因为当两个用户具有该属性的不同本地值时,一个更新将覆盖另一个。此外,它将帮助您获得该属性的当前值。
我认为这段代码可以做你想要的。
firebase.database().ref('total').transaction(function(value) {
if (value) {
value++;
}
return value;
});
您可以在此处阅读交易: Firebase Transactions