aws-amplify-sdk-android - 为具有复杂对象的 android 实现放大数据存储
问题描述
我有一个 android 应用程序,它以文本和图像的形式收集数据。我实现了 AWS Amplify 集成。我正在使用身份验证进行登录,我还添加了数据存储,用于将收集的数据在线/离线同步到云端。但我收到错误 400,因为我的项目超过了 dynamodb 的 400kb 行限制。经过 这里的研究,我发现可以使用 Amplify 数据存储来存储复杂的对象,例如图像,但它们存储在 s3 中。因此,演示这一点的示例代码用于反应,我未能在本机 android 中实现相同的功能。那么有人有办法在android中实现这个吗?
解决方案
目前,Amplify 在使用 API 包时仅支持“复杂对象”。这不包括以不同方式处理 AppSync 的 DataStore 包。
- 复杂对象支持:
import { API } from '@aws-amplify/api'
- 没有复杂的对象支持:
import { DataStore } from '@aws-amplify/datastore'
资料来源:
- https://github.com/aws-amplify/amplify-js/issues/4579#issuecomment-566304446
- https://docs.amplify.aws/lib/graphqlapi/advanced-workflows/q/platform/js#complex-objects
如果要使用DataStore,目前需要将文件单独放入S3,然后可以在DynamoDB记录中存储对S3文件的引用详情(即bucket、region、key)。这可以通过 Amplify Storage 模块来完成。
const { key } = await Storage.put(filename, file, { contentType: file.type } )
const result = await DataStore.save({ /* an object with s3 key/info */ })
推荐阅读
- emacs - Emacs 重新缩进文件
- javascript - Javascript/jQuery 在函数之前设置条件
- r - 使用字符类变量的变异和重新编码(dplyr)后标签丢失
- javascript - 尝试将属性传递到 react-native 中的第二个屏幕时出现错误“未定义不是对象(评估 'this.route')”
- mkdocs - mkdocs 中带有 markdown_include.include 的相对链接(到标题)
- python - 精度和召回率的几何平均值
- asp.net-core - Asp.net 核心未使用正确的证书
- terraform - 使用 terraform 将对象(地图)转换为不同的列表
- delphi - 德尔福的 Round() 似乎是不确定的
- javascript - 在异步函数中捕获异步函数中的错误