Firebase 跨多个节点的数据一致性

标签 firebase

根据the firebase docs数据被展平,索引用于链接树中的不同节点:

users
  $userId
    widgets
      $widgetId
widgets
  $widgetId

在上面的示例中,如果用户创建了一个小部件,则该 widgetid 也会存储在用户节点下。

我的问题是,考虑到现在需要多个写入,是否有一种方法可以保证操作的一致性。

假设第一个操作是:

var newKey = fb.child('widgets').push({ name: 'widge' }).key();

然后我可以将其写入:

fb.child('users').child(auth.id).child('widgets').child(newKey).set(true);

但是如果两次写入之间出现故障或其他问题怎么办?或者,如果我有多个位置需要存储该 key ,并且这些写入之间会发生故障?

Firebase 目前有办法处理这个问题吗?

如果没有,将来是否有计划支持这一点?

如果是这样,有人可以提供一个具体的例子来说明如何做到这一点吗?

最佳答案

请注意,这现在是核心 Firebase API 的一部分。请参阅this blog post了解详情。

var mergedUpdate = {};
mergedUpdate[ 'users/' + userId + '/widgets/' + widgetId ] = true;
mergedUpdate[ 'widgets/' + widgetId ] = widgetData;

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
ref.update(mergedUpdate);

关于Firebase 跨多个节点的数据一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947898/

相关文章:

android - Android 上的 FCM 通知可以覆盖之前的通知吗?

android - 如何使用它的 child 在 recyclerview 中显示来自 firebase 的特定数据?

java - 使用 Firestore,如何使用 java 类序列化文档中的引用类型字段?

android - 无法将 admob 与 firebase iOS/Android 项目链接

firebaseArray 降序?

android - 无法将任何客户端添加到您的 Firebase 项目

android - Android 应用程序图标中的通知计数徽章

node.js - 无法使用 Angular Universal 和 Firebase 函数访问 Cloud Firestore 后端

firebase - 在哪里初始化 initState() 中需要的变量?

java - 获取数据存储时间