【发布时间】:2019-10-08 07:55:28
【问题描述】:
使用: AppSync、DynamoDB 和 Lambda
所以我有点纠结于如何在 React Native 中将 AppSync 集成到 Amplify 中。我在控制台上创建的 AWS AppSync 中有一个现有 API。此 API 有几个不同的模型,例如:用户、视频、视频评论等。这些模型中的一些对象具有自定义映射模板和解析器,这对应用程序非常重要。
例如,这是我们对架构的快速了解。
输入用户{
userId:ID!
名称:字符串
uploadedVideos(limit: Int, nextToken: String): VideoConnection
等等等等
}
输入视频{
videoID:ID!
对象:S3Object
userId:ID!
上传者:用户
}
我们有一个解析器,它运行一个简单的 getVideo 查询,它将使用 userId 检索 uploadBy 属性,并检索该用户的所有必要信息。
此外,我们为模型创建的数据源(dynamoDb 表)具有主键,有些具有排序键。就像 VideoLikes 表一样,它跟踪谁喜欢视频并避免重复,主键是 VideoID,排序键是 UserID。这只是一个小例子,我们在其他地方这样做也是为了访问 LSI。
当我开始使用 Amplify 时,我尝试重新创建 AppSync API,因为我喜欢 CloudFormation 功能在不同的暂存环境中的强大功能。但是,我注意到模型的 DynamoDB 是自动定义的,并被自动设置为 id 作为主键。我们使用 LSI 来帮助按某些值排序,例如,如果我们想按喜欢的数量或 cmets 对视频进行排序,那么不幸的是,这对我们不起作用。因此,当我注意到这一点时,我使用了原始 AppSync API 中的“Codegen”命令并遇到了一个问题,即我的解析器和映射模板没有与架构、查询、突变和订阅一起复制,导致大多数查询失败,因为那些数据源丢失了。
所以我的问题是:
有没有办法在我的 React Native 应用程序中集成/使用现有 AppSync API 中的所有内容?这包括自定义解析器和映射模板。 如果不是
直接在 Amplify CLI 中创建 API 时,是否可以为模型的 DynamoDB 设置主键和排序键? 如果不是
是否有另一种方法可以在不使用 LSI 和 GSI 的情况下在 DynamoDB 中有效地对数据进行排序?如果模型自动生成带有 GSI 的表,这可能会有问题,因为我知道 GSI 有点贵,所以我想尽可能避免使用这些。是否有其他服务可以对 DynamoDB 中可在 AppSync 中使用的数据进行排序? 任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: amazon-web-services react-native amazon-dynamodb aws-amplify aws-appsync