首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VueJs + Firebase

VueJs + Firebase
EN

Stack Overflow用户
提问于 2017-08-02 13:04:01
回答 2查看 322关注 0票数 3

我开始在Firebase (和VueFire)中使用VueFire,但是我开始为如何构造数据而挣扎。

我的案子很简单。

我有一份供应商名单和一份产品清单。

一个产品只能链接到一个供应商,一个供应商可以有多个产品。

我有不同的看法:

  • 所有供应商的所有产品清单
  • 一个供应商的产品清单
  • 向供应商提供一种产品的详细信息。

对于第一和第二视图,我对以下结构没有异议

代码语言:javascript
复制
products
    - productKey1
        - name : Product1
    - productKey2
        - name : Product2
supplier-products:
    - supplierKey1
        - productKey1
             - name : Product1
    - supplierKey2
        - productKey2
             - name : Product2
supplier:
    - supplierKey1
         - name : Supplier1
    - supplierKey2
         - name : Supplier2

我可以很容易地显示"/products“中的所有产品列表,以及”供应商-产品/供应商键“中的每个供应商的列表。

但是关于产品细节+供应商细节的视图呢?

做这件事的最好方法是什么?

  • 将供应商信息添加到每个产品中?
  • 在产品中添加一种外键?
  • 另一种方法?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2017-11-02 22:10:33

我在我的应用程序中也有类似的问题,我在商业和地点之间有着相似的关系。我发现最好的解决方案是有一个商店为企业,一个商店的位置,和一个商店之间的连接。

就你而言:

代码语言:javascript
复制
products: [
  { productKey: 1, name: 'Product1' },
  { productKey: 2, name: 'Product2' },
],
suppliers: [
  { supplierKey: 1, name: 'Supplier1' },
  { supplierKey: 2, name: 'Supplier2' },
],
supplierProducts: [
  { productKey: 1, supplierKey: 1 },
  { productKey: 2, supplierKey: 2 },
]

现在,您可以轻松地通过当前选择的supplierProducts或当前选择的productKey筛选supplierKey列表,然后使用相反的键为您的视图提取正确的列表。

票数 0
EN

Stack Overflow用户

发布于 2021-04-18 22:19:10

虽然我尊重您使用Firebase的选择,但我会为您的情况选择SQL数据库,因为您将有很多关系。

艾登达尔扎的回答是一种方法,但从长远来看,这也是一种昂贵的方法。当您每次从supplierProducts查询时,当您想要显示链接的所有productssuppliers数据时,Firebase都会计算您的读取量。

假设一个供应商有300个产品,每次您想查询与该供应商相关的所有产品时,Firebase都会计算300条数据。

因此,我建议您将每个产品分配给供应商et,然后将产品数据复制到供应商数据:

代码语言:javascript
复制
"products": {
    "productKey1": {
      "name": "Product1",
      "supplierKey": "supplierKey1"
    }
}


 "supplier-products":{
    "supplierKey1":[
      {"id":"productKey1", "name" : "Product1"}
    ],
    "supplierKey2":[
      {"id":"productKey4", "name" : "Product4"},
      {"id":"productKey10", "name" : "Product10"},
      {"id":"productKey15", "name" : "Product15"}
    ],
    "supplierKey3":[
      {"id":"productKey5", "name" : "Product5"}
    ]
}

现在,如果您想从X供应商获取所有产品,您只需从(supplierKeyX/supplierKeyX)获取数据。Firebase将只将其计算为1读,而不是与供应商X连接的产品总数。

如果你担心你需要如何更新产品的所有参考资料,如果是前任的话。名字变了。我建议您观看这个讨论多路径更新的视频

毕竟,去正规化是NoSQL数据库的核心,如果集合之间有很大的关系,那么维护NoSQL DB将非常困难。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45461681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档