#amazon-dynamodb #aws-amplify #amazon-dynamodb-local
Вопрос:
Я использую AWS Amplify
фреймворк, который используется внутри Dynamo DB
и всякий раз, когда я:
- Измените/Переименуйте или добавьте новое соединение @
- Или добавьте или измените любое поле в существующей таблице, которое является ключевыми полями с
@connection
Существующая таблица, содержащая данные, не отражает того же самого, особенно для Многих-многих сценариев. Во время локальной работы со amplify mock
мной у меня есть обходной путь удаления файла .db внутри mock-data/dynamodb
папки и повторной загрузки всех данных. Это работает, но не является хорошим решением для производства!
Примеры: Рассмотрение простого сценария «Многие ко многим»
type Group @model{
id: ID!
subscribers: [GroupMaster] @connection(keyName: "byGroupSubscriber", fields: ["id"])
}
type User @model{
id: ID!
subscribedTo: [GroupSubscriber] @connection(keyName: "byUserSubscriber", fields: ["id"])
}
type GroupSubscriber @model
@key(name: "byGroupSubscriber", fields: ["groupID", "subscriberID"])
@key(name: "byUserSubscriber", fields: ["subscriberID", "groupID"]) {
{
id: ID!
groupID: ID!
subscriberID: ID!
group: Group! @connection(fields: ["groupID"])
subscriber: User! @connection(fields: ["subscriberID"])
}
Здесь, если данные существуют как в таблице групп, так и в таблице пользователей, и я изменяю написание ключа в @connection, скажем byGroupSubscriber
, с byGroupSubscriberNewKeyName
И сохраните новые изменения, затем amplify mock
создадите новые файлы изменений, но когда я вставляю новые GroupSubscriber
данные, новым вставленным данным IndexKey_0
присваивается значение null, что означает, что они не могут использовать ключи для связи с группой! (как показано на скриншоте ниже)
Мой вопрос заключается в том, возникнет ли эта проблема в рабочих таблицах в реальном времени и как тогда поддерживать согласованность данных в этих сценариях?
[ Ниже приведен скриншот того, как GroupSubscriber
будут выглядеть данные в таблице при вставке данных после изменения только имени ключа, который связывает Group
]: