Эй, спасибо за вопрос.Это пока невозможно по умолчанию с помощью ampify-cli, но вы можете сделать это самостоятельно, используя преобразователи конвейера и дополнительный индекс в вашей таблице DynamoDB.Для этого выполните следующие действия:
- Создайте GSI на таблице, где метка - HASH KEY.
- Создайте преобразователь конвейера в поле
Mutation.createTag
в вашемсхемы.Вы можете отключить автоматически сгенерированную мутацию Mutation.createTag
, изменив определение @model на @model(mutations: { update: "updateTag", delete: "deleteTag" })
. - Создать функцию с именем
LookupLabel
, которая выдает Query
против нового GSI, где label = $ctx.args.input.label
.Если это возвращает значение, выведите ошибку с $util.error("Label is not unique")
.Если он не возвращает значений, продолжайте. - Создайте функцию с именем
CreateTag
, которая выдает PutItem
для таблицы тегов. - Добавьте эти две функции для вашего преобразователя конвейера.
Подробнее о преобразователях конвейера вы можете прочитать здесь https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html.
На момент написания статьи усилитель пока не поддерживает настраиваемые преобразователи и преобразователи конвейеров, но вы можете прочитать подробнее об этой функции здесь https://github.com/aws-amplify/amplify-cli/issues/574 как будет поддерживаться в будущем.Сейчас вы можете добавить распознаватель вручную в консоли AWS AppSync или с помощью собственного шаблона CloudFormation, который нацелен на идентификатор API, созданного Amplify.Также было бы полезно, если бы вы создали проблему здесь (https://github.com/aws-amplify/amplify-cli/issues) и отметили ее как запрос функции, потому что можно было бы автоматизировать это с помощью директивы @unique, но это нужно было бы запланировать.
Спасибо