amazon-dynamodb - 如何使用 AWS Amplify 回填新的 AppSync 字段
问题描述
我正在使用 GraphQL 向我的一个 AppSync 表中添加一个排序字段。新架构如下所示:
type MyTable
@model
@auth(rules: [{allow: owner}])
@key(name: "BySortOrder", fields: ["sortOrder"], queryField: "tableBySortOrder")
{
id: ID!
name: String!
sortOrder: Int
}
但是,当使用检索列表时,tableBySortOrder
我得到一个空列表,因为新字段sortOrder
为空。
我的问题是,我如何将这些数据回填到 DynamoDB 表中,这样我的现有用户才不会被这个新变化所干扰?使用传统数据库,我会运行 SQL 更新:UPDATE MyTable SET sortOrder = #
.
但是,我是 NoSQL/AWS 的新手,除了每当用户登录我的应用程序时构建一个回填脚本之外,我找不到这样做的方法。感觉很hacky。处理这种情况的最佳做法是什么?
解决方案
您是否已经在 DDB 中创建了新字段?如果是,我认为您应该在进行客户端更改之前回填它。
编写一个脚本来迭代和更新表。选项:
- Java - 如果您正在运行任何集成测试,请调用 updateItem 以更新表。
- Bash - 使用 AWS CLI:
aws dynamodb scan --table-name item_attributes --projection-expression "whatever" > /tmp/item_attributes_table.txt
然后aws dynamodb update-item --table-name item_attributes --key
. 这是一种肮脏的方式。 - Python - 与上述相同的逻辑。
推荐阅读
- jquery - 如何自定义 jQuery DataTable 分页按钮并填充多个服务调用
- javascript - 如何嵌套 package.json 变量?
- typescript - 如何在 Visual Studio Code 中关闭 Typescript Language Basics 建议?
- python - Python将变量刷新为新值tkinter
- java - java.lang.NoClassDefFoundError:无法初始化类 com.sun.jersey.core.header.MediaTypes
- android - 运行 tns build android --release .... 命令语法不正确
- php - ACF Pro 新字段返回 NULL
- c++ - fstream 无法在树莓派上写入/打开文件
- datatables - 单击表标题跨度时数据表启用/禁用列排序
- java - 声明导致 ObjectFactory 中的冲突