我试图很好地掌握如何在 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/