Appsync 查询联合 return 类型抛出 400

Appsync query union return type throws 400

我有两种类型 StreamVideo 以及一个 listResources 查询 return 是流和视频的混合列表:

type Stream {
    pk: String!
    starts_at: String!
}

type Video {
    pk: String!
    created_at: String!
}

union SearchResult = Stream | Video

type Query {
    listResources(code: String!): [SearchResult]
}

下面是调用查询的示例:

query {
  listResources(code: "234") {
    ... on Stream {
      pk
      starts_at
    }
    ... on Video {
      pk
      created_at
    }
  }
}

出于某种原因,即使查询应该根据 appsync 和 graphql 文档 (https://graphql.org/learn/schema/#union-types, https://docs.aws.amazon.com/appsync/latest/devguide/interfaces-and-unions.html) 正确形成,查询也会抛出 400 错误。

罪魁祸首可能在哪里?

你现在可能已经解决了这个问题,但我猜问题可能是你没有在你的代码中返回 __typename,所以 AppSync 不知道它返回的是联合中的什么类型。它应该返回,例如: { __typename: 'Stream', 克:1, starts_at: '2022-01-07' }