在AppSync中,可以使用Resolver管道来处理多个输出的合并。下面是一个示例解决方法:
type Mutation {
createUser(input: CreateUserInput!): User @aws_iam @aws_cognito_user_pools @aws_auth @aws_subscribe(mutations: ["onCreateUser"])
}
type User {
id: ID!
name: String!
email: String!
createdAt: String!
updatedAt: String!
}
exports.handler = async (event) => {
// 从event中获取多个输出
const output1 = event.result1;
const output2 = event.result2;
// 合并输出
const mergedOutput = {
...output1,
...output2
};
// 返回合并后的输出
return mergedOutput;
};
在AWS Lambda控制台中创建Lambda函数,并将上述代码复制到函数中。
返回到AppSync控制台并打开您的Resolver定义文件。在Resolver定义文件中,将管道配置为调用Lambda函数,并将多个输出作为输入参数传递给Lambda函数。例如,您可以在以下位置添加管道配置:
type Mutation {
createUser(input: CreateUserInput!): User @aws_iam @aws_cognito_user_pools @aws_auth @aws_subscribe(mutations: ["onCreateUser"]) @function(name: "mergeOutputsLambdaFunction")
}
在AppSync控制台中,创建一个新的AppSync函数,并将其配置为使用Lambda函数。将函数名称设置为与Lambda函数名称相同,例如mergeOutputsLambdaFunction
。
点击保存并部署您的AppSync API。
现在,当调用createUser
Mutation时,AppSync将首先执行Resolver管道,该管道将多个输出传递给Lambda函数进行合并。然后,合并后的输出将作为Resolver的返回结果返回给客户端。