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函数的方法。仅供大家参考。
        
  • 相关阅读:
    Unable To Open Database After ASM Upgrade From Release 11.1 To Release 11.2
    11g Understanding Automatic Diagnostic Repository.
    How to perform Rolling UpgradeDowngrade in 11g ASM
    Oracle 11.2.0.2 Patch 说明
    Pattern Matching Metacharacters For asm_diskstring
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    Upgrading ASM instance from Oracle 10.1 to Oracle 10.2. (Single Instance)
    OCSSD.BIN Process is Running in a NonRAC Environment
    Steps To MigrateMove a Database From NonASM to ASM And ViceVersa
    On RAC, expdp Removes the Service Name [ID 1269319.1]
  • 原文地址:https://www.cnblogs.com/yaya666/p/13564309.html
Copyright © 2011-2022 走看看