嵌套变异 GraphQL

Nested mutation GraphQL

我正在使用 AWS Appsync 和 Amplify。 我的 GraphQL 模式片段如下所示:

type Recipe
@model
@auth(rules: [{allow: owner}])
{
 id: ID!
 title: String!
 key: String!
 courses: [Course!]!
}

type Course
@model
@auth(rules: [{allow: owner}])
{
  id: ID!
  name: String!
}

在放大推送时,它会创建 DynamoDB tables RecipeCourse

看了很多教程后,我还是不明白如何在 GraphiQL 中添加食谱。

我如何插入引用课程的新食谱并避免课程中的重复 table?

要在 Course table 中创建引用相同 Course 的多个 Recipe 而没有重复项,您需要设计多对多关系。

到目前为止,您设计的关系不足以让 AppSync 理解,您缺少 @connection 属性。您可以阅读 this answer on github 以了解如何在 AppSync

中设计这种多对多关系

设计关系后,您将使用突变插入数据,AppSync 很可能会为您生成突变代码(如果没有,请在控制台中使用 amplify codegen)。然后您将能够创建数据。

由于您将 DynamoDB 与多个 table 一起使用(放大/AppSync 的默认模式),您将不得不:

  • 连续调用多个突变
  • 使用自定义解析器,如
  • 中所述