Graphql 使用对象数组获取所有qraphql变体的模式错误

Graphql 使用对象数组获取所有qraphql变体的模式错误,graphql,aws-appsync,Graphql,Aws Appsync,我所在的appsync环境已经投入生产一段时间了。这不是第一次突变,甚至不是对项目中的一组对象进行突变。然而,对其他此类案例有效的方法却不适用于这一案例 我隐约记得,有时一个“复杂”参数,比如一个对象数组,甚至是标量,只有在转换为输入类型时才通过解析。下面的LeadboardEventType是一个枚举 type LeaderboardEventScores { event: LeaderboardEventType! score: String! } type Leaderb

我所在的appsync环境已经投入生产一段时间了。这不是第一次突变,甚至不是对项目中的一组对象进行突变。然而,对其他此类案例有效的方法却不适用于这一案例

我隐约记得,有时一个“复杂”参数,比如一个对象数组,甚至是标量,只有在转换为输入类型时才通过解析。下面的LeadboardEventType是一个枚举

type LeaderboardEventScores {
    event: LeaderboardEventType!
    score: String!
}

type LeaderboardConfigScores {
    id: ID!
    scores: [LeaderboardEventScores]!
}

input LeaderboardConfigScoresInput {
     id: ID!
     scores: [LeaderboardEventScores]!
}

虽然上面的类型定义在解析器中工作,但输入定义与之完全相同。我一点也不明白为什么不。他们两个都不能确定我变异的原因。也没有添加一个内部的!用于输入工作。也不只是在ID后面加逗号的输入体!作为突变的论据。但真正让我恼火的是,我无法定义这样的输入。为什么不呢?

我找到了一个解决方案,但如果它对我来说很有意义,那就糟糕了。如果我做了一个输入,就像我正在做一个数组作为参数一样,而不是做一个数组的输入,那么它“工作”

突变呢

modifyLeaderboardConfigScores(
 id: ID!
 scores: [LeaderboardEventScoreInput]!
): [LeaderboardEventScores]!

因此,显然只有当元素类型是输入时才支持非标量数组。

只有标量和枚举可以用于输入和输出。对象类型、接口和联合都是严格的输出类型。输入对象是严格的输入类型。有关更多详细信息,请参阅。
modifyLeaderboardConfigScores(
 id: ID!
 scores: [LeaderboardEventScoreInput]!
): [LeaderboardEventScores]!