GraphQL Mutation语法错误求助:Expected ":" found "}"问题排查
GraphQL Mutation语法错误修复方案
问题背景
首次开发GraphQL项目,仅使用Query时功能正常,添加插入数据的Mutation后抛出语法错误,需求是向Schema写入JSON格式数据用于后续查询。
错误原因
Schema中Mutation类型下的insertStatus字段未指定返回类型,GraphQL要求所有字段(包括Query和Mutation)必须明确声明返回类型,解析器预期看到:来定义返回类型,却直接遇到了闭合的},导致语法报错。
修正步骤
在insertStatus的参数列表后添加返回类型,根据你的resolver逻辑,返回的是MastodonStatus类型的实体,因此可以指定返回MastodonStatus;如果只需要返回操作是否成功,也可以指定返回Boolean。
修正后的Schema代码
const typeDefs = gql` type MastodonStatus { status_id: String! user_id: String! user_url: String acct_name: String! disp_name: String status_content: String! status_url: String } # queries type Query { getAllStatus: [MastodonStatus!] } type Mutation { insertStatus( status_id: String!, user_id: String!, user_url: String, acct_name: String!, disp_name: String, status_content: String!, status_url: String ): MastodonStatus # 补充返回类型 } `; const resolvers = { Query: { getAllStatus() { return; } }, Mutation: { insertStatus: (parent, args) => { return { status_id: args.status_id, user_id: args.user_id, user_url: args.user_url, acct_name: args.acct_name, disp_name: args.disp_name, status_content: args.status_content, status_url: args.status_url } } } }
补充说明
- 如果业务场景不需要返回插入的实体,也可将返回类型改为
Boolean!,同时在resolver中返回true或false表示操作结果 - 所有GraphQL字段(包括Query、Mutation、自定义类型字段)必须遵循
字段名: 类型的语法规则
内容的提问来源于stack exchange,提问作者Zachary Brasseaux
相关产品推荐
相关产品推荐

