AWS AppSync - 为缺少自定义类型和枚举的架构创建资源

时间:2018-04-07 17:10:02

标签: amazon-dynamodb graphql aws-appsync

我了解枚举不是Dynamo中的标准类型:https://forums.aws.amazon.com/thread.jspa?messageID=836386

然而,这里的确切分辨率是多少? 我们应该如何恰当地表示与生成的代码的关系?

- 我错过了什么或生成的代码是否正确,我们需要在dynamo表中创建一些自定义字段然后重写查询?

示例:

type Competition {
  id: ID!
  name: String!
  creator: UserProfile!
  startDate: String!
  endDate: String!
  competitionType: CompetitionType!
  competitors: [UserProfile]!
  prize: Prize!
}

比赛由用户创建,有类型,奖品,并且有竞争对手。当此表的create resources时,代码显然缺少从自定义类型或枚举中派生的任何信息。复杂的模式总是有这种类型的结构,所以我对输出的代码和正确的方向有点困惑。

extend type Mutation {
    createCompetition(input: CreateCompetitionInput!): Competition
}

input CreateCompetitionInput {
  id: ID!
  name: String!
  startDate: String!
  endDate: String!
  ## Missing info
}

1 个答案:

答案 0 :(得分:1)

当AppSync自动生成架构时,它会跳过这些架构,因为它们打算通过其他解析器手动添加。您可以定义附加到每个自定义字段或枚举字段的新查询,但是您引用的数据需要标记竞争对手独有的内容,以便可以查询与此类型相关的内容(因为dynamoDB不是关系数据库)。

在创建新比赛时,您需要使用该比赛独有的内容更新子字段。即需要作为竞争对手进行跟踪的每个UserProfile都会加盖此竞赛ID。每个自定义字段的突变需要单独处理。

本文帮助我解决了同样的问题:https://keyholesoftware.com/2018/05/17/go-forth-and-appsync/