我创建的应用程序的结构如下所示。仅限一家公司的当前结构。
let current = {
products: {
product1: {}//...
},
customers: {
customer1: {},// ...
},
orders: {
order1: {},// ...
},
}
现在我有了设计数据结构,使其成为多公司应用程序。假设公司是ABC
,PQR
,XYZ
,但客户是相同的。因此,客户可以看到来自不同公司的产品。
选项1 :在每个列表文档中添加公司属性。
let option1 = {
company: {
products: {
product1: {
company: 'ABC'
},
},
customers: { //Also we can put it at root with field company as array. Customers are not primary concern
customer1: {
company: 'PQR'
}
},
orders: {
order1: {
company: 'ABC'
}
},
}
}
我的备注:我必须将公司财产放在每个可能超过这些的列表中。它看起来不是正确的解决方案。查询不同公司的产品看起来很容易。
选项2 :复制不同公司的当前根结构。
let option2 = {
company1: {
products: {
product1: {}
},
customers: {//Also we can put it at root with field company as array. Customers are not primary concern
customer1: {},
},
orders: {
order1: {},
},
},
company2: {
products: {
product1: {}
},
customers: {
customer1: {},
},
orders: {
order1: {},
},
},
// ...
}
我的评论:我不了解火库限制和即将推出的功能。在不同公司查询产品可能并不容易。
let option3= {} //your suggestions.
在同一个firestore项目中,假设客户处理不会有问题。
这里可以做些什么?我缺少什么东西?
答案 0 :(得分:2)
几家公司出售相同产品并不想创建自己的库存商品,描述,价格等是不寻常的。另外,如果您有产品销售产品的公司阵列/地图,请在产品文档中,客户将看到他们可以在哪里购买产品,并且可能对任何一家公司都没有忠诚度。如果这是您希望实现的目标,那么您的选择可能对您有用。
公司还希望将有关其客户的某些数据与其他公司分开。
我建议您创建一个Cloud Firestore集合companies
,并为每个公司提供一份文档。在该文档中,您可以为customers
,orders
和products
创建子集合。
根级别的单独users
集合将允许用户维护自己的数据,并允许公司收集他们所需的任何内容以使其记录保持最新。添加用户数据的公共和私有子集可以轻松地为您管理。
来自Firebase团队的Todd Kerpelman已经制作了an excellent video,这将真正有助于Cloud Firestore中的数据建模。
我希望这有助于