Graphql很棒,我已经开始在我的应用程序中使用它了.我有一个显示摘要信息的页面,我需要graphql来返回聚合计数?可以这样做吗?
Rud*_*lah 23
您将定义一个新的GraphQL类型,它是一个包含列表和数字的对象.该数字将由解析器函数定义.
在GraphQL服务器上,您可以定义解析器函数,作为其中的一部分,您必须编写执行任何计算的代码,并获取聚合计数所需的查询.
这类似于为REST API或自定义REST API端点编写对象序列化程序的方式,该端点运行计算聚合计数所需的任何数据库查询.
GraphQL的优势在于它在确定具体返回的数据时为前端提供了更多的功能.您在GraphQL中编写的一些内容与您为REST API编写的内容相同.
Haf*_*ail 11
...需要graphql来返回聚合计数吗?可以这样做吗?
是的,可以做到.
GraphQL会自动为您完成吗?不,因为它不知道/关心您获取数据源的位置.
怎么样?GraphQL没有规定如何获取/改变用户查询的数据.由您的实现来获取请求的聚合数据.您可以直接从MongoDB获取聚合数据并将其提供回服务,或者从数据源获取所需的所有数据并自行进行聚合.
您应该在Graphql中定义聚合数据的类型以及要实现它的函数。例如,如果要编写以下查询:
SELECT age, sum(score) from student group by age;
您应该定义要返回的数据类型:
type StudentScoreByAge{
age: Int
sumOfScore: Float
}
Run Code Online (Sandbox Code Playgroud)
和一个Graphql函数:
getStudentScoreByAge : [StudentScoreByAge]
async function(){
const res = await client.query("SELECT age, sum(score) as sumOfScore
from Student group by age");
return res.rows;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 Hasura,在资源管理器中,您肯定可以看到“聚合”表名称,因此,您的查询将类似于以下内容:
query queryTable {
table_name {
field1
field2
}
table_name_aggregate {
aggregate { count }
}
}
Run Code Online (Sandbox Code Playgroud)
在结果中,您将看到查询的总行数
"table_name_aggregate": {
"aggregate": {
"count": 9973
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20465 次 |
| 最近记录: |