【问题标题】:Get schema errors with all variations of qraphql mutation taking array of objects [duplicate]获取带有对象数组的所有graphql突变变体的模式错误[重复]
【发布时间】:2020-05-21 23:01:35
【问题描述】:

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

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

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

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

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

虽然上面的类型定义在解析器中有效,但输入定义与它不一样。我完全不明白为什么不。而且它们都不能定义我的突变的论点。也没有添加内部!为输入工作。也不只是在 ID 后使用逗号来获取输入的正文!作为突变参数。但真正有我的山羊是我无法定义这样的输入。为什么不呢?

【问题讨论】:

  • 只有标量和枚举可以用于输入和输出。对象类型、接口和联合是严格的输出类型。输入对象是严格的输入类型。 They are not interchangeable。请参阅this post 了解更多详情。

标签: graphql aws-appsync


【解决方案1】:

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

input LeaderboardEventScoreInput {
  event: LeaderboardEventType!
  score: String!
}

和突变

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

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

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2018-06-24
    • 2019-01-01
    • 2017-07-28
    • 2016-02-04
    • 2018-07-14
    • 2016-05-02
    • 2021-05-30
    相关资源
    最近更新 更多