如何修复Node.js Lambda中AWS Amplify GraphQL更新突变失败问题
修复AWS Amplify GraphQL更新突变代码的方案
以下是你的更新代码存在的问题及对应修复方式:
1. 修复JavaScript语法错误
你的variables对象中,id: ID行末尾缺少逗号,会导致JSON序列化失败。另外如果ID是字符串类型的具体值,需要用引号包裹;如果是传入的变量,要确保它是有效的字符串格式。
2. 添加乐观锁必需的_version字段
Amplify GraphQL API默认启用乐观并发控制,更新操作必须携带_version字段(该字段会在创建或查询Driver时返回),否则会返回ConditionalCheckFailedException错误。
修复后的完整代码
const query = /* GraphQL */ ` mutation UPDATE_DRIVER($input: UpdateDriverInput!) { updateDriver(input: $input) { id name _version createdAt updatedAt _lastChangedAt } } `; // 替换为实际获取到的Driver的id和_version值 const targetDriverId = 'driver-123'; const targetDriverVersion = 1; const variables = { input: { id: targetDriverId, name: 'New name', _version: targetDriverVersion } }; const options = { method: 'POST', headers: { 'x-api-key': GRAPHQL_API_KEY }, body: JSON.stringify({ query, variables }) }; const request = new Request(GRAPHQL_ENDPOINT, options); const response = await fetch(request); const body = await response.json(); console.log(body); // 打印响应信息,方便排查后续问题
额外排查建议
- 确认
GRAPHQL_ENDPOINT和GRAPHQL_API_KEY与创建操作使用的完全一致 - 如果仍报错,查看
body中的errors字段,里面会包含具体错误原因(比如权限不足、字段不匹配等)
内容的提问来源于stack exchange,提问作者hewa
相关产品推荐
相关产品推荐

