【发布时间】:2017-01-18 14:59:33
【问题描述】:
我必须更新我的代码并通过将节点的值增加 1 来实现对节点的另一个子更新。我当前的代码如下所示(工作正常):
String key = database.child("rides").push().getKey();
Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/rides/" + key, ride.toMap());
childUpdates.put("/ridesUser/" + ride.getUserID() + "/ownRides/" + key, ride.getTime());
database.updateChildren(childUpdates, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
}
});
添加增量代码的简单方法是:
childUpdates.put("/stations/" + ride.getFromID() + "/rideCount", fromStation.getRideCount() + 1);
但fromStation.getRideCount() 可能已经过时,如果其他用户添加了此站的行程。
我已经阅读了几篇关于使用事务递增值的文章。如何结合子更新和事务?我是否应该在"/stations/" + ride.getFromID() 上运行交易并在doTransaction() 方法中更新我的孩子?这是原子的吗?
【问题讨论】:
标签: firebase firebase-realtime-database