如何从服务器执行 GraphQL 查询
How to execute GraphQL query from server
我正在使用 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;
基本上我想要的是能够做这样的事情:
query(`
{
user(id: ${id}) {
name
}
}
`)
如何创建这个 query
函数?
GraphQL.js 本身不需要 http 服务器到 运行。 express-graphql 只是一个将查询解析器挂载到 http 端点的助手。
您可以将架构和查询传递给 graphql
,它将 return 一个将查询解析为数据的 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);
})
我想通过提供正确执行带有参数的查询/突变的模式来完成@aᴍɪʀ 的回答:
const params = {
username: 'john',
password: 'hello, world!',
userData: {
...
}
}
query(`mutation createUser(
$username: String!,
$password: String!,
$userData: UserInput) {
createUserWithPassword(
username: $username,
password: $password,
userData: $userData) {
id
name {
familyName
givenName
}
}
}`, params)
这样,您就不必到处处理字符串构造位 "
或 '
。
我正在使用 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;
基本上我想要的是能够做这样的事情:
query(`
{
user(id: ${id}) {
name
}
}
`)
如何创建这个 query
函数?
GraphQL.js 本身不需要 http 服务器到 运行。 express-graphql 只是一个将查询解析器挂载到 http 端点的助手。
您可以将架构和查询传递给 graphql
,它将 return 一个将查询解析为数据的 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);
})
我想通过提供正确执行带有参数的查询/突变的模式来完成@aᴍɪʀ 的回答:
const params = {
username: 'john',
password: 'hello, world!',
userData: {
...
}
}
query(`mutation createUser(
$username: String!,
$password: String!,
$userData: UserInput) {
createUserWithPassword(
username: $username,
password: $password,
userData: $userData) {
id
name {
familyName
givenName
}
}
}`, params)
这样,您就不必到处处理字符串构造位 "
或 '
。