先进大家好
我想请问如何用firebase的runTransaction
同时更新两个节点的资料
final DatabaseReference mRef =
FirebaseDatabase.getInstance().getReference("User/Users/" + uid +"/life");
mRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
if (mutableData.getValue() != null) {
long life = (Long) mutableData.getValue();
mutableData.setValue(life + 1);
}
return Transaction.success(mutableData);
}
以上是只更新一个节点时的方法
但是现在我想做一个交易的动作,需要同时更新两个节点
避免操作失败时,资料跑掉
我尝试将以上程式码修改成以下
final DatabaseReference mRef =
FirebaseDatabase.getInstance().getReference("User/Users/" + uid);
mRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
if (mutableData.child("life")getValue() != null &&
mutableData.child("point")getValue() != null ) {
long life = (Long) mutableData.child("life").getValue();
long point = (Long) mutableData.child("point").getValue();
mutableData.child("point").setValue(point - 1);
mutableData.child("life").setValue(life + 1);
}
return Transaction.success(mutableData);
}
但是行不通,结果会将整个uid节点盖掉删除...
请问这种情况该怎么写 ?