第一种方式:  首先来看一下,官方给出的koa-graphql的例子,

```js

var express = require('express');
var {graphqlHTTP} = require('express-graphql');
var { buildSchema } = require('graphql');
var fs = require('fs');
const { resolve } = require('path');
var schema = buildSchema(`
  type Query {
    hello: String
    world: String
  }
`);
const getdata = () =>{
  return new Promise(resolve =>{
    setTimeout(() => {
      resolve('OK11')
    }, 500);
  })
}
var root = {
     hello: (ctx) => ctx ,
     world:async () => {
       return await getdata() ;
     }
    };
var app = express();
app.use('/graphql', function(req,res, next) {
    console.log(req.query);
    next();
}, graphqlHTTP({
  schema: schema, //查询结构体
  rootValue: root,  // 返回结果
}));
```js
原来官方的例子中用的是hello ,通过在rootValue中传入一个对象,对象中各个字段为属性,函数为属性值,返回一个数据结果。
支持异步结果。比如,数据库查询,RPC调用等等。
 
    第二种方式: 通过读取.gql 后缀文件,通过graphql库中的buildSchema方法,传入fs读取后的文件。如下:
  const schema = buildSchema(fs.readFileSync(__dirname + '/schema/comment.gql', 'utf-8'));
  通过schema.getQueryType().getFields().comment.resolve  来定义字段的resolve函数  其中comment是字段  ---------------出自杨浩老师,在极客时间中node课程

  该函数范围一个Promise即可。
   第三种方式: 使用graphql-tools包,分别定义resolver 和 gql 结构,就能用该包的自带方法  makeExecutableSchema,将二者结合。最后挂载到koa或者express的路由     上。但是这种方式要注意resovler的写法,如下列子。定义的数据结构是

type Post {
id: ID!
title: String
author: Author
votes: Int
}
type Query {
posts: [Post]
}
那么对应的resolve函数应该用一下写法。
const resolver = {
  Query:{
    post(){
      return posts
}
}
}
所有查询字段,都在Query这个对象中,定义方法。
以上就是我整理的3种在koa-graphql , express-graphql 中定义 查询字段结果的resolver函数的方法。仅供大家参考。
    

koa-graphql express-graphql 中如何 定义每一个字段resolver执行函数的更多相关文章

  1. python定义的一个简单的shell函数的代码

    把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...

  2. C语言中如何调用另一个源文件里的函数

    在开发大型项目时,我们常常需要将一份源码分成多个源文件来进行编写,这样可以方便后期的维护.下面就介绍如何从一个源文件里调用另一个源文件的函数. 在源文件A1.c中调用A2.c 中的函数有两种方法: 1 ...

  3. VS2012中--查找定义后从未被使用的函数

    操作步骤如下: 选择项目==>右键属性==>代码分析(选择Microsoft的所有规则) 注:默认为 托管建议规则 注:CA1804 CA1811规则 例如需要查看某个项目从未被使用的函数 ...

  4. python中pycharm中.py文件调用一个.py文件的函数

    在相同文件夹内调用函数: file1.py def add(x,y): print('和为:%d'%(x+y)) file2.py import A A.add(1,2)

  5. VTK中,定义imread()函数,读取“.vts"文件

    在本程序中,定义了一个imread()函数,用于读取“.vts”文件,第一个参数为文件路径,第二个参数为输出对象,可以输出为tkStructuredGrid型对象,也可以输出为vtkActor型对象. ...

  6. 在Visual Studio Express 2013中开发自定义控件

    在专业版本中,新建项目时有"Windows Control Library"这样一个类型可以用于新建自定义控件项目. 但是Express版本中,没有这样一个类型可供选择.这里有另外 ...

  7. C语言中宏定义与C++中的内联函数

    一,宏定义:在预处理的时候把宏定义的内容替换到代码中,正常编译. 1,无参数宏定义和有参数宏定义 (1)宏定义不能加分号,比如:#define  PI 3.24;错的,#define  PI 3.24 ...

  8. java中 synchronized 的使用,确保异步执行某一段代码。

    最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ...

  9. android源码中,在系统多媒体数据库中增加一个字段

    由于项目需求,在系统多媒体管理数据库里的存储图像文件的表中需要新增加一个字段,源码在:项目\packages\providers\MediaProvider\MediaProvider.java下,在 ...

随机推荐

  1. 巩固复习(Hany驿站原创)_python的礼物

    Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https://www ...

  2. Checkbutton基本写法

    1.Checkbutton(self 窗口对象,text 按钮显示内容,variable 绑定变量->一起变化, onvalue 用户点击时得到的值,offvalue 没有点击得到的值) sel ...

  3. Python os.fchmod() 方法

    概述 os.fchmod() 方法用于改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限.高佣联盟 www.cgewang.com Unix上可用. 语法 fchmo ...

  4. PHP gd_info - 取得当前安装的 GD 库的信息

    gd_info — 取得当前安装的 GD 库的信息. 语法 array gd_info ( void )高佣联盟 www.cgewang.com 返回一个关联数组描述了安装的 GD 库的版本和性能. ...

  5. PHP min() 函数

    实例 通过 min() 函数查找最小值: <?php高佣联盟 www.cgewang.comecho(min(2,4,6,8,10) . "<br>");echo ...

  6. 2019 HL SC day1

    今天讲的是图论大体上分为:有向图的强连通分量,有向图的完全图:竞赛图,无向图的的割点,割边,点双联通分量,变双联通分量以及圆方树 2-sat问题 支配树等等. 大体上都知道是些什么东西 但是仍需要写一 ...

  7. 回首Java——再回首JDK

    如果你是刚要被Java军训的新兵,可有几时对环境搭建而不知所措?又如若你是驰骋Java战场多年的老将,可曾拿起陪伴你许久的82年的JDK回味一番?今天我们就来道一道JDK,重新来认识认识这个既熟悉又陌 ...

  8. Idea debug报错Command line is too long

    问题: 使用idea开发Java项目,写单元测试,debug时,会有红字报错:Command line is too long 解决方法: 在项目的目录下,找到/.idea/workspace.xml ...

  9. Java集合最全解析,学集合,看这篇就够用了!!!

    在看集合类之前, 我们要先明白一下概念: 1.数据结构 (1):线性表 [1]:顺序存储结构(也叫顺序表) 一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同 ...

  10. C#-用Winform制作一个简单的密码管理工具

    为什么要做? 首先是为了练习一下c#. 想必大家都有过记不起某个平台的账号密码的经历,那种感受着实令人抓狂.那这么多账号密码根本记不住!我之前用python写过一个超级简单(连账号信息都写在代码里那种 ...