Lambda 返回错误数据 - 类型不匹配错误,预期类型为 LIST

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

在我的 schema.graphql 中我设置了查询:

type Query {
  listCourses(param1: String, param2: String): [Course]

并输入课程:

type Course {
  id: ID!
  fullname: String
  shortname: String
  idnumber: String
  summary: String
}

在我的前端应用程序中,我调用这个触发 lambda 的查询: 异步 getDataByCodeType() {

  const query = /* GraphQL */ `
        query ListCourses(
          $param1: String!
          $param2: String!
        ) {
          listCourses(
            param1: $param1
            param2: $param2
          ) {
            id
            fullname
            shortname
          }
      }
    `

  const variables = {
    param1: 'param1',
    param2: 'param1',
  }

  try {
    const result = await API.graphql(graphqlOperation(query, variables))
    console.log(result)
  } catch (error) {
    console.error('Error retrieving data:', error)
  }
}

在我的 lambda 中,我返回数据:

const payload = {
    param1: para1,
    param2: para2,
  };
  const apiResponse = await lambda.invoke({
    FunctionName: FunctionName,
    InvocationType: "RequestResponse",
    Payload: JSON.stringify(payload),
  }).promise();
  const responsePayload = JSON.parse(apiResponse.Payload);
  let data;
  switch (event.target) {
    case 'list_course':
      data = responsePayload.body.courses;
      break;
    default:
      throw new Error("Invalid event target");
  }
  return {
    statusCode: 200,
    listCourse: data
  };

如果我 console.log(data) 我得到对象数组:

[
  {
    id: 1,
    name: 'test',
    idnumber: 'eee',
    description: ''
  },
  {
    id: 2,
    name: 'test2',
    idnumber: 'ccc',
    description: ''
  },
]

但我仍然收到错误:“message”:“无法解析值(/listCourses):类型不匹配错误,预期类型 LIST”}]} 即使我通过 Appsync 进行测试。

amazon-web-services graphql aws-appsync
1个回答
0
投票

谢谢大家的回复,仅返回 lambda 中的数据解决了我的问题:

return data;
instead of
return {
  statusCode: 200,
  listCourse: data
};
© www.soinside.com 2019 - 2024. All rights reserved.