GraphQL对分析解决方案非常感兴趣(想想一个显示图形的webapp).但我找不到任何使用聚合函数的GraphQL示例.这是我的前端完成的大多数查询的主要方面.
对于我的解决方案,我们有3个典型的后端调用.
假设我们在GraphQL中指定了这种类型
type Person {
name: String
age: Int
create_time: Date
}
Run Code Online (Sandbox Code Playgroud)
这似乎很好地由GraphQL处理.这里没问题.
恩.搜索名为Bob的人的年龄{Person(姓名:"Bob"){age}}
这是我想在饼图中显示信息的典型情况.所以,我想说我想按年龄计算人数.
这将是PostgreSQL查询:
SELECT age, count(*) from Ticket group by age;
Run Code Online (Sandbox Code Playgroud)
GraphQL中的等价物是什么?
恩.假设我想计算每小时创建的用户数.
这将是PostgreSQL查询:
SELECT date_trunc('hour', create_time) as create_time_bin, count(*) from Person group by create_time_bin order by create_time_bin ASC;
Run Code Online (Sandbox Code Playgroud)
什么是GraphQL等价查询?
Rya*_*yan 13
GraphQL在一天结束时会响应您定义的类型.您只需将该数据放入类型中即可.无论这是针对这些不同查询的特定类型,还是针对现有类型的数据的字段,都取决于您,但这完全可以归结为.GraphQL在定义类型和所有查询将返回的内容方面确实需要更多的努力,这使得它更加严格,但是其他方面的想法是一些很酷的功能,比如内省和类型检查.如果将这种"临时"数据结构放入GraphQL类型似乎没有逻辑意义,那么如果需要其他数据源,则使用非GraphQL端点并不违法.
Gia*_*yen 10
@Damien,这些问题不是GraphQL的问题。
每当你想要做的东西GraphQL您必须定义一个返回数据类型,功能要实现规格,有时输入数据的类型来进到你的函数。最后,您编写代码来完成这项工作。
实际上,看起来您是用GraphQL语言(重新)编写代码。
以您想在饼图中显示信息的示例为例:
SELECT age, count(*) from Ticket group by age;
Run Code Online (Sandbox Code Playgroud)
在这里定义您的退货数据是年龄和计数列表:
type TickGroupByAge {
age: Int
count: Int
}
Run Code Online (Sandbox Code Playgroud)
使用GraphQL语言定义函数或查询:
getTicketGroupByAge : [TickGroupByAge]`
Run Code Online (Sandbox Code Playgroud)
最后编写一个函数来实现上面的查询:
async function(){
const res = await client.query("SELECT age, count(*) from Ticket group by age");
return res.rows;
}
Run Code Online (Sandbox Code Playgroud)
@Ryan我完全同意GraphQL强迫您编写很多类型定义来解决一个简单的任务。因此,我最终构建了自己的NextQL-类似于GraphQL的GraphQL 引擎,但更简单。
我的项目支持复杂的嵌套类型定义,使您不必定义很多无用的类型。
| 归档时间: |
|
| 查看次数: |
13154 次 |
| 最近记录: |