Firestore对不同数据结构模型的功能和限制

时间:2018-03-29 18:29:58

标签: firebase data-structures firebase-realtime-database google-cloud-firestore

我创建的应用程序的结构如下所示。仅限一家公司的当前结构。

let current = {
    products: {
        product1: {}//...
    },
    customers: {
        customer1: {},// ...
    },
    orders: {
        order1: {},// ...
    },
}

现在我有了设计数据结构,使其成为多公司应用程序。假设公司是ABCPQRXYZ,但客户是相同的。因此,客户可以看到来自不同公司的产品

选项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项目中,假设客户处理不会有问题。

这里可以做些什么?我缺少什么东西?

1 个答案:

答案 0 :(得分:2)

产品

几家公司出售相同产品并不想创建自己的库存商品,描述,价格等是不寻常的。另外,如果您有产品销售产品的公司阵列/地图,请在产品文档中,客户将看到他们可以在哪里购买产品,并且可能对任何一家公司都没有忠诚度。如果这是您希望实现的目标,那么您的选择可能对您有用。

客户

公司还希望将有关其客户的某些数据与其他公司分开。

我的建议

我建议您创建一个Cloud Firestore集合companies,并为每个公司提供一份文档。在该文档中,您可以为customersordersproducts创建子集合。

根级别的单独users集合将允许用户维护自己的数据,并允许公司收集他们所需的任何内容以使其记录保持最新。添加用户数据的公共和私有子集可以轻松地为您管理。

来自Firebase团队的Todd Kerpelman已经制作了an excellent video,这将真正有助于Cloud Firestore中的数据建模。

我希望这有助于