嵌套变异图

时间:2019-02-21 16:55:58

标签: graphql aws-amplify

我正在使用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表RecipeCourse

在阅读了许多教程之后,我仍然不明白如何在GraphiQL中添加食谱。

如何插入带有课程参考的新食谱,并在“课程”表中避免重复?

1 个答案:

答案 0 :(得分:1)

要在Recipe表中创建引用同一Course且没有重复的多个Course,则需要设计多对多关系。

到目前为止,您设计的关系还不足以让AppSync理解,您缺少了@connection属性。您可以阅读this answer on github来获得有关如何在AppSync中设计这种多对多关系的说明

在设计了关系之后,您将使用一个变异来插入数据,并且AppSync可能会为您生成变异代码(如果没有,则在控制台中使用amplify codegen)。然后,您将能够创建数据。

由于您将DynamoDB与多个表一起使用(默认模式为amplify / AppSync),因此您将必须:

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