1 android firebase firebase-realtime-database
为了增加数据库中的int值,我首先使用一个侦听器获取该值,将其递增1,然后将新值设置为database.这有效,但我想知道是否有更简单的方法.这种方式似乎太多了.
Fra*_*len 13
在Firebase数据库中没有增加值(或执行其他计算)的服务器端方法.
你的方法是这样做的一种方式,但它有可能导致竞争条件.
结果现在可能不正确(这取决于您的用例).
在这种情况下,使其工作的一种方法是使用Firebase事务,它将读取和写入组合到一个函数中.
Firebase数据库文档中介绍了事务.我强烈建议阅读它.花几个小时就可以防止出现许多问题.来自文档:
postRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Long value = mutableData.getValue(Long.class);
if (value == null) {
mutableData.setValue(0);
}
else {
mutableData.setValue(value + 1);
}
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError databaseError, boolean b,
DataSnapshot dataSnapshot) {
Log.d(TAG, "transaction:onComplete:" + databaseError);
}
});
Run Code Online (Sandbox Code Playgroud)
d-f*_*erx 13
从 firebase JavaScript SDK v7.14.0 开始,您可以ServerValue.increment()
用来增加firebase 中的值
方法一
var userRef= firebase.database().ref("user/user_id_123");
userRef.push({
likes: firebase.database.ServerValue.increment(1)
});
Run Code Online (Sandbox Code Playgroud)
方法二
firebase.database()
.ref('user')
.child('user_id_123')
.child('likes')
.set(firebase.database.ServerValue.increment(1))
Run Code Online (Sandbox Code Playgroud)
您还可以将浮点数或负值传递给增量函数
| 归档时间: |
|
| 查看次数: |
5173 次 |
| 最近记录: |