zoukankan      html  css  js  c++  java
  • 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函数的方法。仅供大家参考。
        
  • 相关阅读:
    【美菜网】PostgreSQL与MySQL比较
    MySQL数据库MyISAM和InnoDB存储引擎的比较
    【美菜网】in和exist区别
    【美菜网】on、where以及having的区别
    hive 行列转换
    postgresql 发生锁表时的解锁操作
    postgre 中获取某个字段最小的另一个字段的记录
    关于带分区hive表添加字段如何避免插入的新字段数据为null
    git使用入门
    怎么绕过前端的判断提交
  • 原文地址:https://www.cnblogs.com/yaya666/p/13564309.html
Copyright © 2011-2022 走看看