2017-10-09 9 views
0

GraphQLを始めたばかりです。 GraphQL.jsを使用しています。今私はJavaScriptファイルのデータとしてハードコードされたJSONを使用して簡単な例を構築しようとしています。私はカールや不眠症を介してHTTPリクエストを聞くためにエクスプレスミドルウェアを使いたいと思っています。ミドルウェアでは、body-parserを使用してクエリを抽出します。今、私は決議者と問題を抱えています。GraphQL。レゾルバの書き方

私のコードを見てください。

var express = require('express'); 
var graphqlHTTP = require('express-graphql'); 
var { buildSchema, graphql } = require('graphql'); 
var bodyParser = require('body-parser'); 

var schema = buildSchema(` 
    type Product { 
    name: String! 
    price: Int! 
    } 

    type Query { 
    product(name: String): Product 
    } 
`); 

var products = { 
    'Mango': { 
    name: 'Mango', 
    price: 12, 
    }, 
    'Apfel': { 
    name: 'Apfel', 
    price: 3, 
    }, 
}; 

resolvers = { 
    Query: { 
    product: (root, { name}) => { 
     return products[name]; 
    }, 
    }, 
}; 

var app = express(); 
app.use(bodyParser.text({ type: 'application/graphql' })); 

app.post('/graphql', (req, res) => { 
    graphql(schema, req.body) 
    .then((result) => { 
    res.send(JSON.stringify(result, null, 2)); 
    }); 
}); 

app.listen(4000); 

これは機能しません。私はカールを使用してクエリを投稿する

カール-XPOST -H "のContent-Type:アプリケーション/ graphql" -d:http://localhost:4000/graphql

"{" {名前価格}(APFEL \製品名\ ")}"

私は応答{"データ"を取得します。 {"product":null}}リゾルバは呼び出されません。どうやってこれを正しく行うことができますか?

答えて

0

これを試すことができますか?

var resolvers = { 
 

 
    product: (args) => { 
 
    return products[args.name]; 
 
    }, 
 

 

 
}; 
 
app.post('/graphql', (req, res) => { 
 
    graphql(schema, req.body, resolvers) 
 
    .then((result) => { 
 
     res.send(JSON.stringify(result, null, 2)); 
 
    }); 
 
});
は、私は、これは

+0

ありがとう!それがトリックでした。 –

0

私はFunFunFunctionシリーズのエピソードがGraphQlに焦点を当てて見てお勧めあなたの問題を解決することができると思います。 GraphQl Basics

彼のエピソードのすべてが非常に興味深いです(そして実際に楽しい)...