繁体   English   中英

AWS AppSync 访问嵌套解析器中的父解析器属性(插值问题?)

[英]AWS AppSync access parent resolver properties in nested resolver (interpolation problem?)

我有一个 GraphQL API 是这样工作的:

mutation {
  customer(id: "123") {
    someMutation(new: "data") {
      id name email # from customer
    }
  }
}

我们使用嵌套解析器样式是因为我们有一个大架构,它有助于保持整洁。

这意味着我们需要从someMutation解析“args”,并从父解析器继承 ID。

AWS AppSync 文档声称您可以使用$context.source.id字段执行此操作,但据我所知,记录的选项为零。 我们试过这个速度模板:

{
  "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")
}

关于插值或字符串连接的文档很少(除了这个“解析器模板映射指南” ),它是非常不充分的。

根据“解析器映射模板上下文参考” $context.source应该是“包含父字段解析的 map”。

这里的失败模式是我的下游 HTTP 解析器正在接收文字字符串"/customers/$context.source.id"而不是内插变量。

尽管我可能会尝试,但我想不出一种方法来获取带有或不带有任何$util...()助手的内插值,用于 JSONification 字符串连接,引用的任意组合等。

所以,我最终想通了。 父解析器未响应{id: '123'...}数据。

我发现 AppSync 有一个测试控制台,它帮助我验证了,是的,我的 VTL 模板确实在使用预期的负载正常工作。

在此处输入图像描述

然而,我发现非常不直观的是,与大多数将空变量插入到"" (空字符串)的模板语言不同,VTL 模板似乎表现得好像你没有任何插值,所以让我质疑一般的插值语法.

请参阅下方 AppSync 测试控制台的屏幕截图。

还应该有一种使用 AWS CLI/SDK 编写测试的方法,但我没有费心研究它,人体工程学对此不利,需要我们使用 AWS 上的测试帐户配置 CI,然后我们测试我们的无论如何,更高级别的应用程序逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM