在我的 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 进行测试。
谢谢大家的回复,仅返回 lambda 中的数据解决了我的问题:
return data;
instead of
return {
statusCode: 200,
listCourse: data
};