typegraphql:使用变量时在操场上出现参数错误

时间:2019-07-31 07:08:10

标签: typescript variables parameters graphql type-graphql

在graphql操场上尝试使用变量作为参数执行突变时,我面临一个奇怪的问题

mutation userLogin($username:String!, $password:String!){
  userLogin(
    username: $username
    password: $password) 
  {
    id
  }
}

游乐场“ QUERY VARIABLES”标签中的参数:

{
  "username": "test@test.com"
  "password": "Test"
}

此操作失败,并显示消息

{
        "path": "unk",
        "code": "INTERNAL_SERVER_ERROR",
        "message": "Variable \"$username\" of required type \"String!\" was not provided."
      },
      {
        "path": "unk",
        "code": "INTERNAL_SERVER_ERROR",
        "message": "Variable \"$password\" of required type \"String!\" was not provided."
      }

但是运行起来效果很好:

mutation {
  userLogin(
    username: "test8@test.com"
    password: "Test1234!") 
  {
    id
  }
}

我在这里想念什么?

变量为@ArgsType

@ArgsType()
export class LoginInputType {
    @Field()
    username: string;

    @Field()
    password: string;
}

我在解析器中声明了它们

async userLogin(
        @Args() { username, password }: LoginInputType,
        @Ctx() context: GlobalContext
    ): Promise<UsersEntity | null> {

1 个答案:

答案 0 :(得分:0)

在Playground中错误设置变量格式会导致它不发送变量。如果任何变量都不为空,则您的请求将无法通过验证。

{
  "username": "test@test.com"
  "password": "Test"
}

无效的JSON,因为它缺少逗号。 Playground会在出现此类语法错误的任何行的左侧显示一个红色错误指示符。