AWS Amplify + Appsync-是否可以使用@connection转换来级联删除相关数据?

时间:2019-04-16 14:27:53

标签: amazon-dynamodb graphql aws-appsync aws-amplify

我正在使用AWS Amplify和AppSync开发一个Web应用程序,以将我的数据读写到DynamoDB表中。使用Amplify's GraphQL Transforms,使用@connection转换就很容易在数据类型之间建立连接。我想知道是否有可能以简化或半自动的方式删除相关数据。

假设一个简单的博客示例,其中用户拥有一个博客,该博客具有多个帖子,而这些帖子又具有其他用户拥有的评论。如果帖子被删除,我想删除与该帖子相关的评论。如果删除用户,我想删除他们的博客,帖子和与这些帖子相关的评论,以及该用户在其他帖子上留下的任何评论。该示例的设计之处在于,可能希望以某种形式维护某些数据。但是,在某些情况下,这种行为正是我要寻找的。

过去使用Prisma时,我使用了它们的@relation指令来建立类似于使用Amplify的@connection的关系。 但是,在需要级联删除的情况下,我会写一些类似的内容:

type Post {
id: ID! @unique
  title: String!
  body: String!
  owner: ID!
  comments: [Comment!] @relation(name: "PostComments",
onDelete: CASCADE)
}

我可以使用onDelete参数并将其设置为CASCADESET_NULL,具体取决于我想如何使用它。

是否可以通过Amplify做类似的事情?当然,我可以编写一堆VTL或Lambda解析器来处理每种情况,但是我想先检查是否有更快/更容易的方法来实现此目的。

1 个答案:

答案 0 :(得分:0)

Amplify本身不支持此功能。如您所说,您可以使用管道解析器和某些VTL复制此行为,然后通过Amplify CLI或自行部署。有计划允许您编写自己的转换器,以将诸如此类的可重现逻辑编码为解析器(请参见https://github.com/aws-amplify/amplify-cli/issues/1060),还计划将所有Amplify CLI项目都转向管道解析器(请参见https://github.com/aws-amplify/amplify-cli/issues/1055