Модуль API AWS-Amplify: как сделать поля GraphQL уникальными? - PullRequest
0 голосов
/ 04 января 2019

AWS-Amplify предоставляет несколько директив для построения GraphQL-API.Но я не выяснил, как обеспечить уникальность полей.

Я хочу сделать что-то вроде GraphCool:

type Tag @model @searchable {
  id: ID!
  label: String! @isUnique
}

Это конкретный вопрос AWS-Amplify.Дело не в том, как сделать это с помощью стандартного GraphQL.Это очень конкретно о том, как сделать это с помощью модуля API AWS-Amplify.(https://aws -amplify.github.io / документы / JS / апи )

1 Ответ

0 голосов
/ 04 января 2019

Эй, спасибо за вопрос.Это пока невозможно по умолчанию с помощью ampify-cli, но вы можете сделать это самостоятельно, используя преобразователи конвейера и дополнительный индекс в вашей таблице DynamoDB.Для этого выполните следующие действия:

  1. Создайте GSI на таблице, где метка - HASH KEY.
  2. Создайте преобразователь конвейера в поле Mutation.createTag в вашемсхемы.Вы можете отключить автоматически сгенерированную мутацию Mutation.createTag, изменив определение @model на @model(mutations: { update: "updateTag", delete: "deleteTag" }).
  3. Создать функцию с именем LookupLabel, которая выдает Query против нового GSI, где label = $ctx.args.input.label.Если это возвращает значение, выведите ошибку с $util.error("Label is not unique").Если он не возвращает значений, продолжайте.
  4. Создайте функцию с именем CreateTag, которая выдает PutItem для таблицы тегов.
  5. Добавьте эти две функции для вашего преобразователя конвейера.

Подробнее о преобразователях конвейера вы можете прочитать здесь 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, но это нужно было бы запланировать.

Спасибо

...