firebase - 在 Firebase 中存储关系 "Type"或 "Category"数据,无需更新多个位置

标签 firebase

我试图很好地掌握如何在 Firebase 中构建关系数据。我知道数据模型非常不同,但我对关系数据库有着悠久的历史。今天,我正在尝试解决一个简单的问题。

在 MySQL 中,我有一个 Node 表和一个 NodeType 表:

节点表

  • 节点 ID
  • 节点名称
  • 类型 ID

节点类型表

  • 类型 ID
  • 类型名称
  • 类型元数据

我的问题是,我想为每种节点类型存储一组特定的元数据,但我只想将其存储在一个地方。我希望能够更改节点类型 A 的元数据,并将其自动应用于属于该类型的所有节点。

在 Firebase 中构建此结构的最佳方式是什么?

最佳答案

这篇博文提供了有关如何在 Firebase 中重组关系数据的一些想法:https://www.firebase.com/blog/2013-04-12-denormalizing-is-normal.html ,我建议阅读它以更好地理解问题。

对于您的特定用例,您应该能够将节点和节点类型存储在节点元数据中单独的顶级键和引用节点类型下。例如:

/节点 / 姓名: 类型: /类型 / 姓名: 元数据:

您可以使用push方法自动生成节点的ID。对于节点类型,您可以使用相同的推送方法,或者提供类型的手动 ID。

var ref = new Firebase("https://<my-firebase>.firebaseio.com/");
ref.child("types").child("type-a").set({name: "Type A", metadata: "About Type A"});
ref.child("nodes").push({name: "Some node", type: "type-a"});

您可以使用 .once('value') 检索特定类型的类型信息:

ref.child("types/type-a").once("value", function(snapshot) {
  console.log("Metadata for Type A is: " + snapshot.val().metadata);
});

关于firebase - 在 Firebase 中存储关系 "Type"或 "Category"数据,无需更新多个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478213/

相关文章:

firebase - 将 'QueryDocumentSnapshot' 转换为 Json

android - onChildAdded 回调被调用但没有添加

javascript - 使用 update() 将数据同时写入完全独立的位置

javascript - Firebase数据结构思想

android - 如何获取 Firebase 数据库上项目的最大 ID?

android - RecyclerView 问题中的 ImageButton

typescript - 如何使用 typescript 在 firebase 函数中迭代实时数据库

java - 如何从 Firebase 获取特定键的特定子值

firebase - 存储和使用 Firebase 身份验证 token 对我的服务器进行 API 调用

firebase - 在 FCM 中使用 GCM Token 推送消息