Does apollo-client work on node.js?

前端 未结 7 1529
醉酒成梦
醉酒成梦 2020-12-16 09:34

I need a graphql client lib to run on node.js for some testing and some data mashup - not in a production capacity. I\'m using apollo everywhere else (

7条回答
  •  离开以前
    2020-12-16 09:59

    Here is simple node js implementation.

    'graphiql' client is good enough for development activities.

    1. run npm install
    2. start server with "node server.js"
    3. hit "http://localhost:8080/graphiql"  for graphiql client
    

    server.js

    var graphql = require ('graphql').graphql  
    var express = require('express')  
    var graphQLHTTP = require('express-graphql')  
    
    var Schema = require('./schema')  
    
    // This is just an internal test
    var query = 'query{starwar{name, gender,gender}}'  
    graphql(Schema, query).then( function(result) {  
      console.log(JSON.stringify(result,null," "));
    });
    
    var app = express()  
      .use('/', graphQLHTTP({ schema: Schema, pretty: true, graphiql: true }))
      .listen(8080, function (err) {
        console.log('GraphQL Server is now running on localhost:8080');
      });
    

    schema.js

    //schema.js
    var graphql = require ('graphql');  
    var http = require('http');
    
    var StarWar = [  
      { 
        "name": "default",
        "gender": "default",
        "mass": "default"
      }
    ];
    
    var TodoType = new graphql.GraphQLObjectType({  
      name: 'starwar',
      fields: function () {
        return {
          name: {
            type: graphql.GraphQLString
          },
          gender: {
            type: graphql.GraphQLString
          },
          mass: {
            type: graphql.GraphQLString
          }
        }
      }
    });
    
    
    
    var QueryType = new graphql.GraphQLObjectType({  
      name: 'Query',
      fields: function () {
        return {
          starwar: {
            type: new graphql.GraphQLList(TodoType),
            resolve: function () {
              return new Promise(function (resolve, reject) {
                var request = http.get({
                  hostname: 'swapi.co',
                  path: '/api/people/1/',
                  method: 'GET'
                }, function(res){
                        res.setEncoding('utf8');
                        res.on('data', function(response){
                        StarWar = [JSON.parse(response)];
                        resolve(StarWar)
    
                        console.log('On response success:' , StarWar);
                    });
                });
    
                request.on('error', function(response){
                        console.log('On error' , response.message);
                    });
    
                request.end();                      
              });
            }
          }
        }
      }
    });
    
    module.exports = new graphql.GraphQLSchema({  
      query: QueryType
    });
    

提交回复
热议问题