AWS Amplify + Appsync - возможно ли использовать преобразование @connection для каскадного удаления связанных данных? - PullRequest
0 голосов
/ 16 апреля 2019

Я занимаюсь разработкой веб-приложения с использованием AWS Amplify и AppSync для чтения и записи моих данных в таблицы DynamoDB. Используя преобразования GraphQL *1001* Amplify, достаточно легко установить связь между типами данных с помощью преобразования @connection. Я хотел бы знать, возможно ли удалить связанные данные в упрощенном или полуавтоматическом режиме.

Предположим простой пример блога, где у пользователя есть блог, в котором есть посты, в которых, в свою очередь, есть комментарии, принадлежащие другим пользователям. Если сообщение удалено, я хотел бы удалить комментарии, связанные с этим сообщением. Если пользователь удален, я хотел бы удалить его блог, сообщения и комментарии, связанные с этими сообщениями, а также любые комментарии, оставленные пользователем в других сообщениях. Этот пример изобретен тем, что, возможно, желательно, чтобы некоторые из этих данных были сохранены в некоторой форме. Однако в некоторых случаях это именно то, что я ищу.

При работе с Prisma в прошлом я использовал их директиву @relation, чтобы сделать отношения, аналогичные использованию @connection Amplify. Однако в тех случаях, когда я хотел каскадного удаления, я писал бы что-то вроде:

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

Я мог бы использовать и установить для параметра onDelete значение CASCADE или SET_NULL в зависимости от того, как я хотел с ним справиться.

Есть ли способ сделать что-то подобное через Amplify? Конечно, я могу написать кучу резольверов VTL или Lambda для каждого случая, но сначала я хотел проверить, есть ли более быстрый / простой способ реализовать это.

1 Ответ

0 голосов
/ 24 апреля 2019

Это еще не поддерживается изначально Amplify. Как вы сказали, вы можете реплицировать это поведение с помощью преобразователей конвейера и некоторого VTL, а затем развернуть его через CLI Amplify или самостоятельно. Существуют планы, позволяющие вам написать собственные преобразователи для кодирования воспроизводимой логики, подобной этой, в качестве преобразователя (см. https://github.com/aws-amplify/amplify-cli/issues/1060), а также планы перехода к преобразователям конвейеров для всех проектов Amplify CLI (см. https://github.com/aws-amplify/amplify-cli/issues/1055).

).
...