Graphql 如何针对一个字段筛选具有多个值的表
我不熟悉AWS应用程序同步,我想查询哪个应用程序对一个字段接受多个值,并根据输入返回结果。这可能吗Graphql 如何针对一个字段筛选具有多个值的表,graphql,aws-appsync,Graphql,Aws Appsync,我不熟悉AWS应用程序同步,我想查询哪个应用程序对一个字段接受多个值,并根据输入返回结果。这可能吗 listBookByName(bookID:[String],limit:Int,nextToken:String):listBookByNameConnection您可以使用DynamoDB批处理解析程序来完成此操作 您可以将解析程序附加到listBookByName字段。请求映射模板(接受GraphQL查询并将其转换为DynamoDB查询)如下所示: #set($ids = []) #fore
listBookByName(bookID:[String],limit:Int,nextToken:String):listBookByNameConnection
您可以使用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查询,该查询获取标识符列表,并返回帖子列表
我已按照链接中所述配置了设置。但它一直在返回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)
响应映射:
#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”:空
}
}结果是我得到了空值。似乎我缺少一些配置。您的响应映射模板正在返回图书对象列表,请帮助。但是,您的输出类型是一个listBookByNameConnections对象,它包含一个属性“items”,即书籍列表。您可以尝试将listBookByName的输出类型更改为[Books],然后您的响应映射模板应该可以工作。此外,您还可以启用AppSync的日志记录以帮助您进行调试。