如何在Node.js中使用async await操作AWS DynamoDB及写入异常排查
问题解决方法
核心原因
AWS SDK v2的DynamoDB DocumentClient操作方法(比如put、get、query等)直接调用时返回的是AWS.Request对象,不是原生Promise,必须链式调用.promise()方法才能将其转为可await的Promise对象,触发实际的请求执行。你之前的代码只是创建了请求实例,没有真正发送请求到DynamoDB,所以既没有报错也没有数据写入。
修正后的代码
const create = async (docClient,payload,tableName) =>{ try { console.log(payload); // 补充调用.promise()方法触发请求 const createdDoc = await docClient.put({TableName:tableName,Item:payload}).promise() console.log(createdDoc); return createdDoc } catch (error) { console.log('写入错误:', error); throw error } } create(docClient,{"task":"sample"},"todos")
额外排查项
- 确认DynamoDB表
todos的主键名是task,且字段类型和写入的值匹配,否则会返回参数校验错误 - 确认配置的accessKey、secretKey拥有该表的
dynamodb:PutItem权限 - 确认region和endpoint配置和你实际的DynamoDB表所在区域一致
内容的提问来源于stack exchange,提问作者Saurabh
相关产品推荐
相关产品推荐

