gpt4 book ai didi

java - Firebase:在单个事务中更新多个对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:53 27 4
gpt4 key购买 nike

我在下面找到了一些讨论这种情况的话题。

不过还在苦苦寻找,有没有什么推荐的数据结构设计。我看到一个多写库 firebase-multi-write这表示在大多数情况下您可能不需要它。

但我认为我确实需要这个,我的场景是:3 个用户

/users/A : {credit:20}

/users/B : {credit:3}

/users/C : {credit:10}

而且每个用户都可以同时互相窃取积分。,

  • 从 B 学分中窃取 A 看起来像 {21, 2}
  • B 从 C 信用中窃取看起来像 {3, 9}
  • C 从 A 中窃取的积分看起来像 {11, 20}

现在我需要更新每个用户的积分以保持这种一致性,以便每个窃取操作本质上都是原子的。

Java 中处理这种情况同时保持数据完整性的最佳方法是什么?

最佳答案

2015 年 9 月,firebase 开发人员发布了 new version .

在这个版本中,您现在可以在对两个位置的单个原子更新中执行此操作:

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
// Generate a new push ID for the new post

Firebase newPostRef = ref.child("posts").push();
String newPostKey = newPostRef.getKey();

// Create the data we want to update
Map newPost = new HashMap();
newPost.put("title", "New Post");
newPost.put("content", "Here is my new post!");

Map updatedUserData = new HashMap();
updatedUserData.put("users/posts/" + newPostKey, true);
updatedUserData.put("posts/" + newPostKey, newPost);

// Do a deep-path update
ref.updateChildren(updatedUserData, new Firebase.CompletionListener() {
@Override
public void onComplete(FirebaseError firebaseError, Firebase firebase) {
if (firebaseError != null) {
System.out.println("Error updating data: " + firebaseError.getMessage());
}
}
});

关于java - Firebase:在单个事务中更新多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com