我正在使用AWS Amplify
内部使用的框架,Dynamo DB
并且每当我:
- 更改/重命名或添加新的@connection
- 或添加或更改现有表中的任何关键字段
@connection
包含数据的现有表并不反映相同,尤其是对于多对多场景。在本地工作时,amplify mock
我有删除文件mock-data/dynamodb
夹内的 .db 文件并再次加载所有数据的解决方法。这可行,但不是生产的好解决方案!
示例:考虑一个简单的多对多场景
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
设置为空,这意味着它不能使用键链接到组!(如下面的截图所示)
我的问题是在实时生产表中是否会发生此问题以及如何在这些情况下保持数据一致性?
[以下是GroupSubscriber
仅更改链接的键名后插入数据时表中数据的屏幕截图Group
]: