You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB DocumentClient执行put操作后无返回数据,本地sls offline环境

问题原因&解决方案

1. Put操作ReturnValues参数配置错误

你当前put请求的ReturnValues设置为ALL_OLD,该枚举值仅当你覆写已存在的DynamoDB条目时,才会返回被覆盖的旧数据。你现在是新增全新条目,不存在旧数据,所以location.Attributes必然为空,这是符合DynamoDB API设计的正常行为。
如果你需要返回写入的条目,直接返回你构造完成的toCreateLocation对象即可,因为你已经确认数据写入成功:

try {
  await this.client
    .put({
      TableName: this.tableName,
      Item: toCreateLocation,
      // 新增场景不需要配置ReturnValues
    })
    .promise();
  // 直接返回构造好的新对象
  return toCreateLocation;
} catch (err) {
  console.log(err);
  return {} as LocationEntity;
}

如果确实需要DynamoDB返回写入后的新数据,需要改用update操作,将ReturnValues设置为ALL_NEW。

2. 本地端点配置错误

检查环境变量DYNAMO_DB_ENDPOINT的取值:

  • 必须带http://前缀,正确格式为http://127.0.0.1:8000,不要仅写localhost:8000,避免DNS解析异常导致请求卡住
  • 如果你是在Docker容器中运行sls offline,需要将DynamoDB的端点改为Docker宿主机的访问地址,且保证两个容器在同一Docker网络下

3. 权限/调用逻辑检查

  • 如果你开启了serverless-offline的IAM模拟功能,需要在serverless.yml中为Lambda配置dynamodb:PutItem、dynamodb:GetItem的对应操作权限
  • 检查createLocation的上层调用代码,必须加await关键字调用该异步方法,否则会拿不到返回结果
  • Get操作无返回时,检查传入的主键是否完整:必须同时传分区键+排序键(如果表设置了排序键),缺省会返回空结果且不会抛出异常

内容的提问来源于stack exchange,提问作者Vinicius Bass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:04