Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“存储关系型”;“类型”;或;类别“;Firebase中的数据,无需更新多个位置_Firebase - Fatal编程技术网

“存储关系型”;“类型”;或;类别“;Firebase中的数据,无需更新多个位置

“存储关系型”;“类型”;或;类别“;Firebase中的数据,无需更新多个位置,firebase,Firebase,我试图很好地掌握如何在Firebase中构造关系数据。我知道数据模型是非常不同的,但我对关系数据库有很长的历史。今天,我想解决一个简单的问题 在MySQL中,我有一个节点表和一个节点类型表: 节点表 节点Id 节点名 类型Id 节点类型表 类型Id 类型名 类型元数据 我的问题是,我想为每个节点类型存储一组特定的元数据,但我只想将其存储在一个地方。我希望能够更改节点类型A的元数据,并使其自动应用于属于该类型的所有节点 在Firebase中构建关系数据的最佳方式是什么?这篇博客文章对如何在

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

在MySQL中,我有一个节点表和一个节点类型表:

节点表

  • 节点Id
  • 节点名
  • 类型Id
节点类型表

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


在Firebase中构建关系数据的最佳方式是什么?

这篇博客文章对如何在Firebase中重构关系数据有一些想法:,我建议阅读它以更好地理解问题

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

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

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

var ref=新Firebase(“https://.firebaseio.com/");
ref.child(“types”).child(“type-a”).set({name:“type a”,元数据:“About type a”});
ref.child(“nodes”).push({name:“Some node”,type:“type-a”});
您可以使用
.once('value')
检索特定类型的类型信息:

ref.child(“类型/type-a”)。一次(“值”,函数(快照){
log(“类型A的元数据为:“+snapshot.val().Metadata”);
});

谢谢阿南特。这是有道理的。很难接受这样一个事实:我必须进行两次“查询”才能获取节点及其类型元数据,因为我已经绑定到关系模型很长时间了。这是存储对Firebase中其他位置的引用的常见模式吗?这个模型会对应用程序性能产生负面影响吗?是的,我同意做两个查询是不对的,但这是“NoSQL”商店(包括Firebase)的标准做法。我们正在开发一个API的“v2”,希望它有一些实用程序来简化这个过程-请随时提供反馈!