在Firestore中创建结构和获取数据

时间:2018-06-10 08:23:29

标签: angular firebase google-cloud-firestore

我是Firestore&的新手火力地堡。我来自Sql Background,我打算创建新的IONIC,Angular应用程序。我决定使用firebase or firestore,但我觉得firestore在从SQL背景中思考时,在获取查询方面有一些限制。让我来看看我的要求。它在SQL方面很简单。

我有user

user -> UID,FirstName,LastName,Age,DateCreated,Status,Email

我有另一张表Products

Products -> PID, ProductName,ProductDescriptio,Price,UID

如果你注意到Products表,你可以理解UID是User表中的一个键。这是它在SQL中的定义方式。

在这里,我可以找到与用户相关的所有产品,并且我也可以应用过滤器,例如日期和版本。通过电子邮件获取特定产品。

我理解filestore is a collection ->document ->Collection ->document样式结构。

如何使用Angular在firestore中创建这些结构和查询。这在firestore / firebase中是否有用,或者应该再次返回Sql。

由于

1 个答案:

答案 0 :(得分:1)

在你的情况下,你有1对多的关系。这允许您的用户文档具有一组产品。检索特定用户的产品集合很简单:

db.collection('users').doc(userId).collection('products')

然后可以使用firestore查询过滤这些内容。请注意,与SQL相比,这些过滤器非常有限。阅读guides of firestore以了解有关限制的更多信息。

在firestore中没有多对多关系的概念,它们必须手动建模。对于检索数据,您必须在关系的末尾循环并获取该循环中的另一端。这在SQL领域是禁忌的,但在大多数情况下,由于websocket连接,使用Firestore很好。

在任何情况下,大多数过滤都可以通过巧妙地使用查询或通过非规范化数据来建模。然而,这需要与SQL思维方式完全不同的思维方式。

如果您需要进行复杂的过滤,则不提供全文搜索或聚合firebase。我们通常使用firebase来存储数据,然后监听更改,索引到elasticsearch并使用它来查询数据。

给出什么建议真的取决于您的具体用例。了解确切的限制并尝试不同的场景是至关重要的。