• koa-graphql express-graphql 中如何 定义每一个字段resolver执行函数


      第一种方式:  首先来看一下,官方给出的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函数的方法。仅供大家参考。
        
  • 相关阅读:
    通达OA 新旧两种数据库连接方式
    c++ 如何获取系统时间
    性能测试开源小工具——http_load介绍
    http_load安装与测试参数分析
    不错的C++框架: Thrift(2)-传输和网络相关
    管理处理器的亲和性(affinity)
    300元内,此耳机是首选。不亏千人好评,对的起你的耳朵。
    [品质生活] 舒适 Schick HYDRO 5剃须刀
    巴氏刷牙法_百度百科
    Amazon.com : The Odyssey of the Manual Toothbrusher
  • 原文地址:https://www.cnblogs.com/yaya666/p/13564309.html
Copyright © 2020-2023  润新知