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

    定义和用法 restore_exception_handler() 函数恢复之前的异常处理程序. 该函数用于在通过 set_exception_handler() 函数改变后恢复之前的异常处理程序. ...

  2. luogu P1973 [NOI2011]NOI 嘉年华 dp

    LINK:NOI 嘉年华 一道质量非常高的dp题目. 考虑如何求出第一问 容易想到dp. 按照左端点排序/右端点排序状态还是很难描述. 但是我们知道在时间上肯定是一次选一段 所以就可以直接利用时间点来 ...

  3. 5.22 noip模拟赛

    本来我是不想写的,无奈不会写.蒟蒻 考场就是想不出来 今天得到了100分额外水过了100分我是真的失败.还有一个根本不会check 感觉自己非常之菜. 这道题是这样的 还行吧比较有意思 首先确立一个真 ...

  4. 数据结构C语言实现----选择排序

    选择排序 第一步:从一串无序数字串中选一个最小的与第一个数交换位置 第二步:从剩下的数字中选一个最小的与第二个数交换位置 第三步:从剩下的数字中选一个最小的与第三个数字交换位置 以此类推... 运行结 ...

  5. python3.5 continue和break 项目:买房分期付款(2)

    #案例:买房分期付款24万(10年期限) i=1#定义年份sum1=0while i<=10: print("第",i,"年到了......") if i ...

  6. Nginx.conf参数配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  7. 语言模型 Language Model (LM)

    定义 什么是语言模型,通俗的讲就是从语法上判断一句话是否通顺.即判断如下的概率成立: \[p(\text{今天是周末})>p(\text{周末是今天}) \] 链式法则(chain rule) ...

  8. subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

    将anaconda环境下的  lib/python3.5/dist-packages/torch/utils/cpp_extension.py文件 将['ninja','-v']改成['ninja', ...

  9. JavaScript重定向

    使用JavaScript重定向到其他网页的一些方法: location.href location.replace() location.assign() 语法: window.location.hr ...

  10. ASP.NET Core3.x 基础(1)

    ASP.NET Core与2.x相比发生的一些变化: 项目结构 Blazor SignalR gRPC 关于Program类:Main方法,在系统执行时就会找到这个Main方法,实际上是配置了ASP. ...