2017-01-02 5 views
3

graphql-expressを使用してgraphqlクエリを実行できるエンドポイントを作成しています.SQLデータベースでSequelizeを使用していますが、 graphql resolve関数。どのように定義されたのと同じサーバーからgraphql APIをクエリするのですか?サーバからGraphQLクエリを実行するには

これは私が私のgraphqlエンドポイントを設定する方法です:

const express = require('express'); 
const router = express.Router(); 
const graphqlHTTP = require('express-graphql'); 
const gqlOptions = { 
    schema: require('./schema') 
}; 
router.use('/', graphqlHTTP(gqlOptions)); 

modules.exports = router; 

は基本的に私が何をしたい、このような何かを行うことができるようにすることです:

query(` 
    { 
    user(id: ${id}) { 
     name 
    } 
    } 
`) 

どのように私はこのquery関数を作成しますか?

答えて

5

GraphQL.js自体はhttpサーバを実行する必要はありません。 express-graphqlは、クエリーリゾルバをhttpエンドポイントにマウントするヘルパーです。

スキーマとクエリをgraphqlに渡すと、プロミスが返され、クエリがデータに解決されます。

graphql(schema, query).then(result => { 
    console.log(result); 
}); 

ので:

const {graphql} = require('graphql'); 
const schema = require('./schema'); 
function query (str) { 
    return graphql(schema, str); 
} 

query(` 
    { 
    user(id: ${id}) { 
     name 
    } 
    } 
`).then(data => { 
    console.log(data); 
}) 
+0

は、より多くのオプションを取得https://github.com/graphql/graphql-js/blob/fb27b92a5f66466fd8143efc41e1d6b9da97b1f4/src/graphql.js#L62でソースコードを表示するには – Vincent

関連する問題