如何从服务器执行GraphQL查询

Hof*_*ann 13 javascript graphql graphql-js

我正在使用graphql-express创建一个端点,我可以在其中执行graphql查询.虽然我使用Sequelize和SQL数据库,但是直接在我的graphql resolve函数之外的服务器上使用它是错误的.如何从与其定义的同一服务器中查询我的graphql API?

这就是我设置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;
Run Code Online (Sandbox Code Playgroud)

基本上我想要的是能够做这样的事情:

query(`
  {
    user(id: ${id}) {
      name
    }
  }
`)
Run Code Online (Sandbox Code Playgroud)

我该如何创建这个query功能?

Aᴍɪ*_*ᴍɪʀ 19

GraphQL.js本身不需要运行http服务器.express-graphql只是将查询解析器挂载到http端点的帮助器.

您可以将架构和查询传递给graphql它,它将返回一个Promise,它将解析查询到数据.

graphql(schema, query).then(result => {
  console.log(result);
});
Run Code Online (Sandbox Code Playgroud)

所以:

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);
})
Run Code Online (Sandbox Code Playgroud)