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

AWS Lambda中DynamoDB QueryCommand返回空结果求助

排查DynamoDB QueryCommand返回200但无结果的问题

首先看你代码里最明显的错误:占位符大小写不匹配

你在KeyConditionExpression里写的是:mydata(全小写),但ExpressionAttributeValues里定义的是:myData(大写D)。DynamoDB会把这两个视为完全不同的占位符,相当于你实际查询的是pk = 未定义值,自然返回空结果。

修正后的代码应该是:

const command = new QueryCommand({
    TableName: 'my-table',
    KeyConditionExpression: 'pk = :mydata',
    ExpressionAttributeValues: {
      ":mydata": "Blah", // 这里和占位符保持大小写一致
    },
    ConsistentRead: true,
  });

如果修正后还是没结果,再按以下步骤排查:

  • 检查DocumentClient配置:确认你的docClient是否指定了本地DynamoDB的端点endpoint: "http://localhost:8000"。如果没配置,SDK默认会请求AWS云端的DynamoDB,而你本地的数据只在本地实例里,自然查不到。
  • 验证ConsistentRead设置:虽然你开启了强一致性读,但如果是刚写入的数据,极端情况下可能还没完成同步(不过你用CLI能查到,这个概率低),可以尝试关闭ConsistentRead再测试。
  • 核对表名和分区键:确保代码里的TableName和CLI里的my-table完全一致,分区键确实是pk,没有拼写错误(比如写成PK或者id)。
  • 确认数据类型匹配:DocumentClient会自动把JS字符串转成DynamoDB的S类型,和你CLI里的参数一致,但如果你的表中pk是其他类型(比如数字N),代码里传字符串就会匹配失败,可以检查表结构和数据类型是否对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:13:18