首页 > 解决方案 > 如何针对一个字段过滤具有多个值的表

问题描述

我是新手AWS App Sync,我想查询哪个字段接受多个值并根据输入返回结果。这可能吗?

listBookByName(bookID: [String], limit: Int, nextToken: String): listBookByNameConnection

标签: graphqlaws-appsync

解决方案


您可以使用DynamoDB 批处理解析器来完成此操作。

您可以将解析器附加到listBookByName字段。请求映射模板(获取 GraphQL 查询并将其转换为 DynamoDB 查询)如下所示:

#set($ids = [])
#foreach($id in ${ctx.args.bookID})
    #set($map = {})
    $util.qr($map.put("id", $util.dynamodb.toString($id)))
    $util.qr($ids.add($map))
#end

{
    "version" : "2018-05-29",
    "operation" : "BatchGetItem",
    "tables" : {
        "Books": {
            "keys": $util.toJson($ids),
            "consistentRead": true
        }
    }
}

然后,您的响应映​​射模板必须将结果编组到您的listBookByNameConnection类型中。

这是文档中的一个示例,其中他们有batchGet查询,该查询采用标识符列表并返回帖子列表。

https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html#single-table-batch


推荐阅读