gpt4 book ai didi

firebase - 在 Firebase 中构建关系

转载 作者:行者123 更新时间:2023-12-04 13:49:41 25 4
gpt4 key购买 nike

我的 Firebase 中有两个项目:providersservices ,我正在尝试找出使用 Firebase 推荐的扁平化架构方法来构建和建立关系的最佳方法。

我的数据看起来像这样:

{
"services" : {
"hip_replacement" : {
"title" : "Hip Replacement"
}
},

"providers" : {
"the_blue_hospital" : {
"title" : "The Blue Hospital"
}
}
}

我想将这两个项目链接在一起,这样如果您要访问髋关节置换页面,蓝色医院将显示在其下方,如果您要访问蓝色医院页面,髋关节置换将显示在其下方。本质上是双向的关系。

构建这样的东西的最佳方法是什么?我在思考以下几点:
{
"services": {
"hip_replacement": {
"title": "Hip Replacement",
"providers": {
"the_blue_hospital": true,
"the_red_hospital": true
}
},
...
},
"providers": {
"the_blue_hospital": {
"title": "The Blue Hospital",
},
"the_red_hospital": {...
},
"the_green_hospital": {...
}
}
}

有没有更好的方法来实现这个或更优雅的解决方案?任何帮助表示赞赏。

提前致谢!

最佳答案

Firebase 中连接数据的问题在于,您针对某些读取或更新用例进行了优化,而牺牲了其他用例。在上面的示例中,创建或删除服务和提供者之间的关系需要对每个“表”进行两次单独的更新。这真的没有错,但这不是唯一的方法。

对于中等大小的数据集,您可以有一个“连接表”,将服务映射到提供者,类似于在关系数据库世界中可能做的事情。数据可能如下所示:

{
"services": {
"hip_replacement": {}
},
"providers": {
"the_blue_hospital": {...},
"the_red_hospital": {...},
"the_green_hospital": {...}
},
"serviceProviders": {
"-JqD5JX0RUDTXsu7Ok3R": {
"provider": "the_blue_hospital",
"service": "hip_replacement"
}
"-JqDoKfyJqPkQlCXDvFM": {
"provider": "the_green_hospital",
"service": "hip_replacement"
}
"-JbE7Ji_JRz2bHgBdMWQ": {
"provider": "the_blue_hospital",
"service": "hip_replacement"
}
}

这种方法有优点也有缺点:


  • 轻松在一处添加映射
  • 在一处轻松删除映射
  • 用于重新格式化数据以进行显示的灵活选项,超出单个提供商或服务的上下文,例如索引。

  • 骗局
  • 您已经加载了整个数据集。 Firebase 不允许您在一个键内进行过滤,客户端必须加载整个列表,然后在内存中进行过滤。我怀疑这将适用于数百条记录,无论如何,可能适用于数千条记录。
  • 您必须做一些客户端工作来过滤要显示的列表并将其与实际的服务和提供者数据合并。同样,如果数据集不是太大,underscore/lodash groupBy() 可以简化此工作。

  • 你应该考虑:
  • 你会做多少更新和删除?
  • 加盟信息真的这么简单吗?您是否需要更多记录(显示名称、价格等)使连接表的维护比我建议的更复杂?
  • 关于firebase - 在 Firebase 中构建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905280/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com