这篇博文对如何在 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);
});