在AWS AppSync嵌套解析器中访问父解析器属性(插值问题)
AWS AppSync嵌套解析器字符串插值问题解决
你的核心问题是Velocity模板中$context.source.id未被正确解析,导致下游收到字面量字符串。原因是直接将带变量的字面量传入$util.toJson,Velocity不会解析其中的变量。以下是两种可行的修复方案:
修复后的Velocity模板
方案1:字符串拼接后转JSON
{ "version": "2018-05-29", "method": "POST", "params": { "headers": { "Content-Type": "application/json" }, "query": { "command_name": "set_email", "new": $util.toJson($context.arguments.new) } }, "resourcePath": $util.toJson("/customers/" + $context.source.id) }
方案2:使用Velocity原生插值语法
Velocity支持在双引号包裹的字符串中直接解析变量,也可以这样写:
{ "version": "2018-05-29", "method": "POST", "params": { "headers": { "Content-Type": "application/json" }, "query": { "command_name": "set_email", "new": $util.toJson($context.arguments.new) } }, "resourcePath": "$util.toJson('/customers/$context.source.id')" }
关键说明
- 移除了原模板中
"new"字段后的多余逗号,避免JSON语法错误 $context.source.id会从父解析器(customer字段的解析结果)中获取真实ID值- 必须让Velocity先完成变量解析/字符串拼接,再通过
$util.toJson生成合法的JSON格式值,不能直接将带变量的字面量传入toJson
内容的提问来源于stack exchange,提问作者Lee Hambley
相关产品推荐
相关产品推荐

