在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> {
答案 0 :(得分:0)
在Playground中错误设置变量格式会导致它不发送变量。如果任何变量都不为空,则您的请求将无法通过验证。
此
{
"username": "test@test.com"
"password": "Test"
}
无效的JSON,因为它缺少逗号。 Playground会在出现此类语法错误的任何行的左侧显示一个红色错误指示符。