velocity - 无法转换为对象 - AppSync 速度模板
问题描述
我的地图与架构匹配。我显然只是不明白一些事情。我是 appsync、graphql 和 velocity 的新手,所以我确信这是一个简单的错误,但我已经转了几个小时试图找出我做错了什么。
询问
query MyQuery {
searchUSDAFoundationFoods(terms: "apple") {
uid
description
}
}
回复
{
"data": {
"searchUSDAFoundationFoods": null
},
"errors": [
{
"path": [
"searchUSDAFoundationFoods"
],
"data": null,
"errorType": "MappingTemplate",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "Unable to convert \n[\n \n \n {\"uid\":\"usda-foundation-food-1105664\",\"description\":\"Apples, granny smith, with skin, raw\"}\n \n \n {\"uid\":\"usda-foundation-food-1105781\",\"description\":\"Apples, gala, with skin, raw\"}\n \n \n {\"uid\":\"usda-foundation-food-1105547\",\"description\":\"Apples, honeycrisp, with skin, raw\"}\n \n \n {\"uid\":\"usda-foundation-food-1105430\",\"description\":\"Apples, red delicious, with skin, raw\"}\n \n \n {\"uid\":\"usda-foundation-food-1105897\",\"description\":\"Apples, fuji, with skin, raw\"}\n] to Object."
}
]
}
响应模板
[
#foreach($entry in $context.result.hits.hits)
#set($myMap = {})
$util.qr($myMap.put("uid", $entry.get("_id")))
$util.qr($myMap.put("description", $entry.get("_source").get("description")))
$util.toJson($myMap)
#end
]
架构
type FoodSearchResult {
uid: String
description: String
}
type Query {
searchUSDAFoundationFoods(terms: String): [FoodSearchResult]
}
解决方案
当我将响应模板更改为以下内容时,它开始工作:
[
#foreach($entry in $context.result.hits.hits)
#set($myMap = {})
$util.qr($myMap.put("uid", $entry.get("_id")))
$util.qr($myMap.put("description", $entry.get("_source").get("description")))
#if( $velocityCount > 1 ) , #end
$util.toJson($myMap)
#end
]
唯一的变化是添加了以下行:
#if( $velocityCount > 1 ) , #end
我在一个示例中注意到了它,但在亚马逊网站上的速度模板编程指南中没有明确解释它是什么,它是如何工作的,或者为什么需要它,也没有其他任何地方。
更新:
该行添加了必要的逗号以使结果有效 JSON。
推荐阅读
- javascript - 使用 js 从 html 发送数据并使用 gson 在 servlet 上发送数据
- java - 如何打印字符串数组列表?
- r - geom_line 上方 geom_segment 的类似热图的图例
- xml - 在Powershell中编辑具有相同节点名称的不同xml节点
- gatsby - Gatsby 页面组件作为类组件
- java - 是什么原因导致 ”
使用 Luke 在 Lucene 中没有位置数据的索引”错误? - sql - ColdFusion - 需要遍历文件夹以从 SQL 查询中查找特定文件并将它们复制或压缩到临时文件夹
- php - 使用 CakePHP 3.7 测试路由中间件
- hyperledger-fabric - Hyperledger Fabric - 新的 MSP 隶属关系错误 - 访问被拒绝:频道 [] creator org []
- java - DocumentBuilderFactory 无法设置功能 FEATURE_SECURE_PROCESSING