【问题标题】:How To Use The Same GraphQL Query Multiple Times In A Single API Call. Amplify, DynamoDB如何在单个 API 调用中多次使用相同的 GraphQL 查询。放大,DynamoDB
【发布时间】:2020-11-11 02:59:37
【问题描述】:

用户将输入多个用户名,我想在单个 API 调用中搜索我的 DynamoDB 表中的所有每个用户的 ID。 以下是 graphql 用户模式的重要部分:

type User
  @model
  @key(name: "byName", fields: ["username"], queryField: "findUsername")
   {
  id: ID!
  email: AWSEmail!
  username: String!
  firstName: String
  lastName: String
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
} 

我想创建一个查询,它获取用户名列表并在单个 api 调用中返回每个用户的用户 ID。我不确定如何动态和单独地将用户名添加到查询中。顺便说一句,我正在使用 aws-amplify 来帮助使用 dynamodb 和 graphql。这也是一个 React Native 项目。

【问题讨论】:

    标签: react-native graphql amazon-dynamodb aws-amplify dynamodb-queries


    【解决方案1】:

    您可以使用 AWS AppSync 中的批处理操作运行多个查询和突变。例如:BatchGetItem

    type Post {
        id: ID!
        title: String
    }
    
    type Query {
        batchGet(ids: [ID]): [Post]
    }
    

    示例查询

    query get {
        batchGet(ids:[1,2,3]){
            id
            title
        }
    }
    

    batchGet.request.vtl

    #set($ids = [])
    #foreach($id in ${ctx.args.ids})
        #set($map = {})
        $util.qr($map.put("id", $util.dynamodb.toString($id)))
        $util.qr($ids.add($map))
    #end
    
    {
        "version" : "2018-05-29",
        "operation" : "BatchGetItem",
        "tables" : {
            "Posts": {
                "keys": $util.toJson($ids),
                "consistentRead": true
            }
        }
    }
    

    batchGet.response.vtl

    $util.toJson($ctx.result.data.Posts)
    

    有关更多详细信息,请查看本教程。 https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html

    【讨论】:

      猜你喜欢
      • 2022-11-19
      • 2013-06-08
      • 2020-05-13
      • 2019-12-13
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多