2017-01-02 53 views
3

我正在使用graphql-express來創建一個端點,我可以在其中執行graphql查詢。雖然我在使用Sequelize和SQL數據庫,但感覺不對,直接從服務器以外的服務器使用它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,它會返回一個Promise來將查詢解析爲數據。

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