GraphQL,使用 GraphiQL 的查询语法不正确

Posted

技术标签:

【中文标题】GraphQL,使用 GraphiQL 的查询语法不正确【英文标题】:GraphQL, incorrect syntax for query using GraphiQL 【发布时间】:2018-05-25 12:32:11 【问题描述】:

GraphQL 新手,我在通过 GraphiQL 发送查询时遇到问题。

这是我的 schema.js

const graphql = require('graphql');
const _ = require('lodash');
const
    GraphQLObjectType,
    GraphQLInt,
    GraphQLString,
    GraphQLSchema
 = graphql;

const users = [
    id:'23', firstName:'Bill', age:20,
    id:'47', firstName:'Samantha', age:21
];

const UserType = new GraphQLObjectType(
    name: 'User',
    fields:
        id: type: GraphQLString,
        firstName: type: GraphQLString,
        age:type: GraphQLInt
    
);

const RootQuery = new GraphQLObjectType(
    name: 'RootQueryType',
    fields:
        user: 
            type: UserType,
            args:
                id: type: GraphQLString
            ,
            resolve(parentValue, args) // move the resolve function to here
                return _.find(users, id: args.id);
            
        ,

    
);

module.exports = new GraphQLSchema(
    query: RootQuery
);

当我在 graphiql 上运行以下查询时:

query 
  user 
    id: "23"
  

我收到“语法错误 GraphQL 请求 (3:9) 预期名称,找到字符串”,但我希望得到 id 为“23”的用户。

我错过了什么?

【问题讨论】:

【参考方案1】:

你将你的参数值放在你的选择上,它应该看起来像

query 
  user(id: “23”) 
    id
    firstName
    age
  

请查看教程http://graphql.org/graphql-js/passing-arguments/的参数部分

【讨论】:

以上是关于GraphQL,使用 GraphiQL 的查询语法不正确的主要内容,如果未能解决你的问题,请参考以下文章

使用 React 查询 GraphQL 时 JSON 意外结束,而 GraphiQL 没有问题

GraphQL 查询从 JSON 数据源返回 GraphiQL 和 App 中的空对象

当我通过 graphiql 发送查询时,graphql JS 返回 null

使用 GraphiQL 或 GraphQL 端点生成 schema.json

Apollo/GraphQL 突变在 GraphIQL 中有效,但在客户端代码中无效?

从 db 获取与 GraphiQL 不同的数据