我使用的是AWS放大器、AppSync (GraphQL)和Go Lambda函数。我将我的功能定义如下
type Mutation {
goadd(name: String): String @function(name: "goadd-${env}")
}解析器请求模板是:

然后我的羔羊是
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"的文档,对于如何传递值感到非常含糊。
发布于 2022-11-21 04:53:19
我在看other StackOverflow答案时找到了答案。这不是一个重复,因为引用的所以post是针对一个单独的问题,顺便指出了从请求中获取参数的正确方法。解决方案是传入的值是字符串映射(在我的例子中)参数。所以而不是
Name string `json:"name"`它应该是
type Arguments struct {
Arguments map[string]string `json:"arguments"`
}然后您可以访问数据
name := arguments.Arguments["name"]我更希望有一个包含"Name“和作为参数传递的任何其他内容的结构,但这是我想作为更新发布的第一步,以便至少获得数据和解决问题。
https://stackoverflow.com/questions/74502596
复制相似问题