当前位置:  开发笔记 > 数据库 > 正文

graphql可以返回聚合计数吗?

如何解决《graphql可以返回聚合计数吗?》经验,为你挑选了4个好方法。

Graphql很棒,我已经开始在我的应用程序中使用它了.我有一个显示摘要信息的页面,我需要graphql来返回聚合计数?可以这样做吗?



1> Rudolf Olah..:

您将定义一个新的GraphQL类型,它是一个包含列表和数字的对象.该数字将由解析器函数定义.

在GraphQL服务器上,您可以定义解析器函数,作为其中的一部分,您必须编写执行任何计算的代码,并获取聚合计数所需的查询.

这类似于为REST API或自定义REST API端点编写对象序列化程序的方式,该端点运行计算聚合计数所需的任何数据库查询.

GraphQL的优势在于它在确定具体返回的数据时为前端提供了更多的功能.您在GraphQL中编写的一些内容与您为REST API编写的内容相同.


很好的解释!我认为主要的理由是GraphQL不会为您进行计算和聚合.所有这些都应该发生在GraphQL查询对象的resolve函数中,需要告诉它检索所需的预聚合数据,对其进行处理,然后返回结果.

2> Petr Bela..:

GraphQL本身没有自动聚合函数.

您可以添加一个名为的字段summary,并在resolve函数中计算总计.



3> Hafiz Ismail..:

...需要graphql来返回聚合计数吗?可以这样做吗?

是的,可以做到.

GraphQL会自动为您完成吗?不,因为它不知道/关心您获取数据源的位置.

怎么样?GraphQL没有规定如何获取/改变用户查询的数据.由您的实现来获取请求的聚合数据.您可以直接从MongoDB获取聚合数据并将其提供回服务,或者从数据源获取所需的所有数据并自行进行聚合.



4> Enayat..:

您应该在Graphql中定义聚合数据的类型以及要实现它的函数。例如,如果要编写以下查询:

SELECT age, sum(score) from student group by age;

您应该定义要返回的数据类型:

 type StudentScoreByAge{
      age: Int
      sumOfScore: Float
    }

和一个Graphql函数:

 getStudentScoreByAge : [StudentScoreByAge]
    async function(){
        const res = await client.query("SELECT age, sum(score) as sumOfScore 
                                        from Student group by age");
        return res.rows;
    }

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有