AppSync和Graphql Enum突变

时间:2018-06-11 20:23:33

标签: amazon-web-services amazon-dynamodb graphql aws-appsync aws-amplify

我在AppSync for Gralphql中有以下架构

input CreateTeamInput {
    name: String!
    sport: Sports!
    createdAt: String
}

enum Sports {
    baseball
    basketball
    cross_country
}
type Mutation{
    createTeam(input: CreateTeamInput!): Team
}

然而,当我尝试使用aws-amplify库通过

执行查询时
export const CreateTeam = `mutation CreateTeam($name: String!, $sport: String!){
  createTeam(input:{name:$name, sport:$sport}) {
    id,
    name,
    sport
  }
}
`;

....

API.graphql(graphqlOperation(CreateTeam, this.state))

我收到以下错误:Validation error of type VariableTypeMismatch: Variable type doesn't match

如何更新我的代码以使用此枚举类型?

2 个答案:

答案 0 :(得分:3)

CreateTeamInput.sport字段类型是枚举,因此您的$sport变量必须是枚举。

尝试将您的查询更改为:

export const CreateTeam = `mutation CreateTeam($name: String!, $sport: Sports!){
  createTeam(input:{name:$name, sport:$sport}) {
    id,
    name,
    sport
  }
};

注意: 作为惯例,更喜欢使用大写字母表示枚举值,因此很容易将它们与字符串区分开来。

enum SPORTS {
    BASEBALL
    BASKETBALL
    CROSS_COUNTRY
}

答案 1 :(得分:0)

$ sport需要是体育类型而不是字符串