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

AWS Amplify + Appsync - Is it possible to use @connection transform to cascade delete related data?

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

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

过去使用 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 解析器来处理每种情况,但我想先检查是否有更快/更简单的方法来实现它。

Amplify 尚不支持此功能。正如您所说,您可以使用管道解析器和一些 VTL 复制此行为,然后通过 Amplify CLI 或自行部署。有计划允许您编写自己的转换器来编码像这样的可重现逻辑作为解析器(参见 https://github.com/aws-amplify/amplify-cli/issues/1060) as well as plans to move towards pipeline resolvers for all Amplify CLI projects (see https://github.com/aws-amplify/amplify-cli/issues/1055)。