我是AWS App Sync
的新手,我想查询一个字段接受多个值并根据输入返回结果。这可能吗?
listBookByName(bookID: [String], limit: Int, nextToken: String): listBookByNameConnection
答案 0 :(得分:0)
您可以使用 DynamoDB批处理解析器来完成此操作。
您会将解析器附加到 listBookByName 字段。请求映射模板(执行GraphQL查询并将其转换为DynamoDB查询)如下所示:
{{1}}
然后,您的响应映射模板将不得不将结果编组为您的 listBookByNameConnection 类型。
这是文档中的一个示例,其中他们具有 batchGet 查询,该查询获取标识符列表,并返回帖子列表。
https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html#single-table-batch
答案 1 :(得分:0)
我已经按照链接中所述配置了设置。但它一直都返回null。
type Query {
listBookByName(bookID: [String], limit: Int, nextToken: String): istBookByNameConnections
}
type listBookByNameConnections {
items: [Books]
}
我的解析器映射:
#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
}
}
}
响应映射:
$util.toJson($ctx.result.data.Books)
我用来检查响应的查询:
query get {
listBookByName(bookID:["JAVA","JUNIT"]){
items{
name
}
}
}
输出: { “数据”:{ “ listDriverTripsByName”:null } }