我是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。
由于
答案 0 :(得分:1)
在你的情况下,你有1对多的关系。这允许您的用户文档具有一组产品。检索特定用户的产品集合很简单:
db.collection('users').doc(userId).collection('products')
然后可以使用firestore查询过滤这些内容。请注意,与SQL相比,这些过滤器非常有限。阅读guides of firestore以了解有关限制的更多信息。
在firestore中没有多对多关系的概念,它们必须手动建模。对于检索数据,您必须在关系的末尾循环并获取该循环中的另一端。这在SQL领域是禁忌的,但在大多数情况下,由于websocket连接,使用Firestore很好。
在任何情况下,大多数过滤都可以通过巧妙地使用查询或通过非规范化数据来建模。然而,这需要与SQL思维方式完全不同的思维方式。
如果您需要进行复杂的过滤,则不提供全文搜索或聚合firebase。我们通常使用firebase来存储数据,然后监听更改,索引到elasticsearch并使用它来查询数据。
给出什么建议真的取决于您的具体用例。了解确切的限制并尝试不同的场景是至关重要的。