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

Angular 在Firestore中创建结构和获取数据,angular,firebase,google-cloud-firestore,Angular,Firebase,Google Cloud Firestore,我是Firestore&Firebase的新手。我来自Sql的背景,我计划创建新的离子,角度应用程序。我已经决定使用firebase或firestore,但如果从SQL后台考虑,我觉得firestore在获取查询方面有一些限制。让我来满足我的要求。它在SQL方面很简单 我有一个用户表 我还有一张桌子 若你们注意到Products表,你们就可以理解UID是用户表中的一个键。这就是它在SQL中的定义方式 在这里,我可以找到所有与用户相关的产品,也可以应用日期和电子邮件等过滤器来获取特定的产品 我知道

我是Firestore&Firebase的新手。我来自Sql的背景,我计划创建新的离子,角度应用程序。我已经决定使用firebase或firestore,但如果从SQL后台考虑,我觉得firestore在获取查询方面有一些限制。让我来满足我的要求。它在SQL方面很简单

我有一个用户表

我还有一张桌子

若你们注意到Products表,你们就可以理解UID是用户表中的一个键。这就是它在SQL中的定义方式

在这里,我可以找到所有与用户相关的产品,也可以应用日期和电子邮件等过滤器来获取特定的产品

我知道filestore是一个集合->文档->集合->文档样式的结构

如何使用Angular在firestore中创建这些结构和查询。这在firestore/firebase中是可行的还是应该再次返回Sql


谢谢

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

db.collection'users'.docuserId.collection'products'

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

在firestore中,没有多对多关系的概念,它们必须手动建模。为了检索数据,您必须在关系的一端循环,并在该循环中获取另一端。这在SQLLand中是不允许的,但在大多数情况下,Firestore可以,因为websocket连接

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

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


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

@Hareesh你有什么想法吗?
user -> UID,FirstName,LastName,Age,DateCreated,Status,Email
Products -> PID, ProductName,ProductDescriptio,Price,UID