You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:10:28