【发布时间】:2021-10-04 16:32:15
【问题描述】:
我有一个 PostgreSQL 数据库,其中包含不同实体/表之间的各种关系。例如。老师和学生,老师和教室,学生和班级。在我的(快速)后端*中,我发现自己编写了很多乏味的路由来提取数据——这些路由进行类似但略有不同的 SQL 查询(我们使用 sequelize),例如
- 根据年龄获取学生
- 根据学校获取教师
- 让所有与特定老师一起学习的学生
- 让所有教授特定学生的老师
- 获取在特定时间段内上课的所有学生
- 获取在特定时间和特定老师上课的所有学生。
当然,最后两个可以通过在没有教师约束时传递 null 来轻松合并到一个 REST 端点。尽管如此,还有更多的排列,而且这个数字只会随着新实体的增加而增长。
为了加快开发速度,我想知道 (i) GraphQL 是否能给我们带来任何好处(我们今天有大约 30 条路线)(ii) 是否甚至可以设置和使用 GraphQL 以以某种方式无需做大量样板工作即可连接到我的 postgreSQL(和 redis)数据库。
我查看了 Apollo 文档 (https://www.apollographql.com/docs/tutorial/data-source/),并查看了 SQLDataSource (https://github.com/cvburgess/SQLDataSource),看来我仍然需要为我的每个场景编写/公开端点 - 例如如果我想找出哪些学生有哪些老师,我仍然需要编写一个手动 SQL 查询来执行此操作并将其作为 SQLDataSource 对象上的方法公开。我想我在这里误解了一些东西,因为我认为这是 GraphQL 的关键价值主张。
非常感谢!
*我们今天只有一项服务,但很快就会添加另一项服务
【问题讨论】:
标签: api rest graphql microservices apollo-client