使用 AWS Appsync 和 GraphQL 查询 Dynamo DB 中的多个表
Posted
技术标签:
【中文标题】使用 AWS Appsync 和 GraphQL 查询 Dynamo DB 中的多个表【英文标题】:Query Multiple Tables in Dynamo DB using AWS Appsync and GraphQL 【发布时间】:2020-07-16 19:36:50 【问题描述】:我正在尝试使用 Amazon 的 App Sync、DynomiteDB 和 GraphQL 构建一个 ios 应用程序。我已经设置了一张可以向其发送 API 调用的表。但是,我在我的数据库中创建了一个新表,并在 Graphql 模式中为它编写了查询。但是,当我调用在表中创建一个新对象时,我收到错误:在服务器上保存项目时出错:[无法承担角色 arn:...我想知道是否可以查询两个不同的表没有明确的关系(即,其中一个表包含另一个表中包含的对象列表)。
【问题讨论】:
【参考方案1】:使用 DynamoDB 单元解析器,您可以查询单个表(在 DynamoDB 批量操作之外,但这些是为批量用例保留的) https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html
使用管道解析器,您可以查询多个表,但调用是顺序的(查询表 A,然后查询表 B 等等)并且不能是动态的(您不能查询表 A 并循环遍历结果和为每个项目发出针对表 B) 的查询。管道解析器对于执行检查非常有用,例如从表 A 进行身份验证调用,然后从表 B 进行查询。
如果您的用例更复杂,我建议您使用 Lambda 数据源并在 Lambda 内执行 DynamoDB 调用,另外还可以使用您最喜欢的编程语言。
【讨论】:
以上是关于使用 AWS Appsync 和 GraphQL 查询 Dynamo DB 中的多个表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS appsync (GraphQL) 禁用自省查询?
无法将大型 graphql 模式上传到 aws appsync
使用 AWS Amplify/AppSync 的嵌套 GraphQL 突变
AWS AppSync - 从 AppSync 控制台运行时的 GraphQL 查询超时