如何使用 AWS appsync javascript 解析器与 NONE 资源解析字符串字段

问题描述 投票:0回答:1

我有这个带有类型的 appsync GraphQL 架构

type Place {
  id: ID!
  name: String!
  nameTranslations: FieldTranslations
}

然后我有这种类型和分页类型的解析器,效果很好。现在我想为“名称”字段添加一个字段解析器,它将根据查询参数自动翻译名称..

这是 Javascript appsync 解析器

export function request(context) {
  const source = context.source;
  const lang = context.arguments.lang || "en";

  const translations = source.nameTranslations || {};
  let translatedName = source.name;

  if (translations[lang]) {
    translatedName = translations[lang];
  }

  return {
    payload: {
      translatedName,
    },
  };
}

export function response(context) {
  return context.result.translatedName;
}

正确翻译名称并应返回更改后的名称。对于这种情况,我使用 NONE 数据源。

以下是创建解析器的地形

resource "aws_appsync_resolver" "translatePlace" {
  api_id            = var.app-sync-id
  field             = "name"
  type              = "Place"
  request_template  = "{}"
  response_template = "$context.result"
  kind              = "PIPELINE"

  pipeline_config {
    functions = [
      module.translatePlace.appsync-function.function_id
    ]
  }

  depends_on = [module.translatePlace]
}

基本上它只是添加

request_template  = "{}"
response_template = "$context.result"

但是这样,我无法实际解析字段值..只是不断收到错误

{
    "data": null,
    "errors": [
        {
            "path": [
                "places",
                "places",
                0,
                "name"
            ],
            "data": null,
            "errorType": "MappingTemplate",
            "errorInfo": null,
            "locations": [
                {
                    "line": 15,
                    "column": 7,
                    "sourceName": null
                }
            ],
            "message": "Unable to convert 123Another City to Object."
},....

映射后函数响应和解析器的正确映射是什么?我想我几乎完成了一切,但不断出错。

javascript graphql aws-appsync aws-appsync-resolver
1个回答
0
投票

您正在使用 VTL

request_template
response_template
变量。

由于您使用 JS 作为解析器,因此请使用

code
变量。

在此处查看

Example JS
部分:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appsync_resolver#example-usage-js 你正在使用

© www.soinside.com 2019 - 2024. All rights reserved.