首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lambda AppSync GraphQL -从突变请求获取字符串-未找到

Lambda AppSync GraphQL -从突变请求获取字符串-未找到
EN

Stack Overflow用户
提问于 2022-11-19 18:29:38
回答 1查看 25关注 0票数 1

我使用的是AWS放大器、AppSync (GraphQL)和Go Lambda函数。我将我的功能定义如下

代码语言:javascript
复制
type Mutation {
  goadd(name: String): String @function(name: "goadd-${env}")
}

解析器请求模板是:

然后我的羔羊是

代码语言:javascript
复制
package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-lambda-go/lambda"
)

type MyEvent struct {
    Name  string `json:"name"`
}

func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
    fmt.Printf("Hello %v\n", name.Name)
    fmt.Println(name)
    fmt.Println(ctx)
    return fmt.Sprintf("Hello %s!", name.Name), nil
}

func main() {
    lambda.Start(HandleRequest)
}

当我在AppSync中执行一个突变时,我得到的响应是Hello !

我还检查了CloudWatch日志,它们没有显示正在传递的任何数据。

我使用Node.js尝试了同样的方法,它没有出现问题,所以我不知道我在Go中做错了什么。有谁有主意吗?

我还阅读了"github.com/aws/aws-lambda-go/lambda"的文档,对于如何传递值感到非常含糊。

EN

回答 1

Stack Overflow用户

发布于 2022-11-21 04:53:19

我在看other StackOverflow答案时找到了答案。这不是一个重复,因为引用的所以post是针对一个单独的问题,顺便指出了从请求中获取参数的正确方法。解决方案是传入的值是字符串映射(在我的例子中)参数。所以而不是

代码语言:javascript
复制
Name string `json:"name"`

它应该是

代码语言:javascript
复制
type Arguments struct {
    Arguments map[string]string `json:"arguments"`
}

然后您可以访问数据

代码语言:javascript
复制
name := arguments.Arguments["name"]

我更希望有一个包含"Name“和作为参数传递的任何其他内容的结构,但这是我想作为更新发布的第一步,以便至少获得数据和解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74502596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档