没有输入参数的Graphql突变不起作用

没有输入参数的Graphql突变不起作用,graphql,nestjs,Graphql,Nestjs,我创建了一个NestJS示例,添加了一个变种,将用户信息同步到后端 并添加了以下代码,@GqlUser将从我的jwt令牌中提取用户信息 @Mutationreturns=>UpdateUserResult @UseGuardsJwtAuthGuard updateUser@GqlUser用户:用户主体:可观察{ console.log'gql user:',user; const{userId,email,name}=user; 返回此.usersService.update{id:userId

我创建了一个NestJS示例,添加了一个变种,将用户信息同步到后端

并添加了以下代码,@GqlUser将从我的jwt令牌中提取用户信息

@Mutationreturns=>UpdateUserResult @UseGuardsJwtAuthGuard updateUser@GqlUser用户:用户主体:可观察{ console.log'gql user:',user; const{userId,email,name}=user; 返回此.usersService.update{id:userId,email,name}.pipe mapb=>{ 成功:b, }, ; } 相关的GraphQL定义由NestJS生成,如下所示:

type Mutation {
  //... other defs.
  updateUser: UpdateUserResult!
}


type UpdateUserResult {
  message: String!
  success: Boolean!
}

// other defs.
但是当通过以下形式执行这种变异时

// failed due to *the expectedName is not a ")"*, it is a syntax error
mutation SyncUser{
   updateUser(){//error
       success
   }
}
// or 
mutation SyncUser(){ // error 
   updateUser(){
       success
   }
}

在GraphQLspec中,输入参数在变异定义中应该是可选的。

您的变异名称是updateUser,因此您应该使用类似的名称:

mutation {
    updateUser () 
    {
       success    
    } 
          }
考虑到在括号内,您需要传递操作所需的数据


无论如何,我建议使用GraphQL Playerd来找到正确的查询格式。

我在Playerd中尝试过,并附上了一张图片。不知道是谁否决了这个。没有args=>没有括号,当然了。你也可以发布usersService.update的实现吗?
mutation {
    updateUser () 
    {
       success    
    } 
          }