Динамо БД не отображает правильные поля в таблице после обновления schema.graphql - PullRequest
1 голос
/ 27 июня 2019

У меня есть файл schema.graphql в моем проекте React. Когда я обновляю схему и удаляю атрибуты, таблица DynamoDB не меняется. Новые поля не появляются, а старые, которые я удалил, остаются. Я пытался amplify push несколько раз, но ничего не изменилось. Что я могу сделать, чтобы решить эту проблему или синхронизировать таблицу?

Спасибо.

1 Ответ

1 голос
/ 27 июня 2019

В настоящее время AWS Amplify не поддерживает автоматическую миграцию данных.То, что вы видите, следует ожидать с таблицей NoSQL без схемы. Цитирование документов :

Таблицы являются основными структурами данных в реляционных базах данных и в DynamoDB.Система управления реляционными базами данных (RDBMS) требует, чтобы вы определяли схему таблицы при ее создании.Напротив, таблицы DynamoDB не содержат схем - кроме первичного ключа, вам не нужно определять какие-либо атрибуты или типы данных во время создания таблицы.

Вам нужно перестать думатьресурсов, которые Amplify генерирует для вас как СУБД, и начните думать об этом с точки зрения базы данных NoSQL.Amplify использует хитрый трюк, чтобы позволить вам создавать схемы реляционных данных.Я рекомендую вам прочитать часть основных компонентов документации DynamoDB, чтобы понять, что такое первичные и (глобальные / локальные) вторичные индексы.Затем посмотрите это видео , которое объясняет, как Amplify создает отношения между таблицами.(Кстати, у большинства хорошо спроектированных бэкэндов DynamoDB есть только одна таблица - поэтому только одна директива @model и никаких директив @connection.)

Что происходит, если вы делаетеamplify push Ваши изменения будут применены к конечной точке AppSync GraphQL.(Вы можете проверить это в своей консоли).Но существующие данные в DynamoDB остаются прежними.Если вы создаете новые данные, они будут следовать схеме вашего schema.graphql файла.

...