第一种方式:  首先来看一下,官方给出的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. PHP mb_substr() 函数

    实例 从字符串中返回 "菜鸟": <?php echo mb_substr("菜鸟教程", 0, 2); // 输出:菜鸟 ?> 定义和用法 mb_ ...

  2. 小甲鱼零基础汇编语言学习笔记第五章之[BX]和loop指令

         这一章主要介绍什么是[BX]以及loop(循环)指令怎么使用,loop和[BX]又怎么样相结合,段前缀又是什么鬼,以及如何使用段前缀.   1.[BX]的概念      [BX]和[0]类似 ...

  3. JavaScript动画实例:运动的字母特效

    已知圆的坐标方程为: X=R*SIN(θ) Y=R*COS(θ)     (0≤θ≤2π) 给定初始坐标位置(X,Y),按照圆的坐标方程,从角度angle = 0开始,每间隔angleSpeed = ...

  4. day5.流程控制及while单项循环

    一.判断类型 isinstance 1.语法 """ 语法: # 用法一 isinstance(要判断的值,要判断的类型) 返回True 或者 False # 用法二 i ...

  5. ios_中将UITextField输入框设置为密码形式

    1.通过XIB方式实现: 将UITextField中的secure选项勾中即可. 2.通过代码实现: UItextField * test = [ UItextField alloc] init ]; ...

  6. spring security 简介+实战

    过滤器链: 依赖: security 功能列表: 一.登录验证.权限验证 1.1 httpbasic验证 1.2form验证 建立数据需要遵循RBAC模型 用户表要参考UserDetail创建 实例类 ...

  7. beyond compare4 密钥 亲测可用

    beyond compare4过了试用期: 密钥: w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv1BM3+H1XygMtiE0-J ...

  8. 17、Observer 观察者模式

    以一个实例给大家引入观察者,大家多多少少都写过html或者java中的swing.我们定义一个按钮,给他增加一个点击事件,那么这个方法是怎么被触发到呢,对了,就是利用了观察者设计模式 观察者模式 当对 ...

  9. Visual Studio 2017版本15.9现在可用

    本文转自 https://blogs.msdn.microsoft.com/visualstudio/2018/11/19/visual-studio-2017-version-15-9-now-av ...

  10. C#LeetCode刷题之#686-重复叠加字符串匹配(Repeated String Match)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3963 访问. 给定两个字符串 A 和 B, 寻找重复叠加字符串A ...