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

使用本地二级索引执行DynamoDB Query返回空结果求助

排查DynamoDB Query本地索引返回空的问题

先修正代码里的异步处理问题:
client.send(command)是异步操作,你没有用await,所以res拿到的是Promise对象,不是实际查询结果。修改代码如下:

try {
  res = await client.send(command);
} catch(err) {
  console.log(1, JSON.stringify(err));
}

这一步先确保你能拿到真实的响应数据,而非Promise对象。

接下来针对本地二级索引(LSI)的查询逻辑,逐一排查以下点:

  • 确认索引键结构:本地二级索引的分区键必须和主表分区键完全一致。检查LITimestamp索引的定义,确认其分区键为PK,且你查询的account#225873187286700#chat确实存在于主表的PK中,且对应条目被包含在该索引内。
  • 索引同步状态:新创建的LSI需要时间同步数据,若索引刚创建,等待一段时间后再尝试查询。
  • 主表数据与投影规则:确认主表中存在PK = account#225873187286700#chat的条目,且这些条目满足LSI的投影条件(若索引设置了投影限制,需确保目标字段被包含)。
  • 名称拼写准确性:检查TableName和IndexName的拼写(包括大小写),DynamoDB对这些名称大小写敏感。

若修正异步问题后仍返回空,建议直接在DynamoDB控制台用相同条件执行Query:

  • 控制台能返回数据:说明代码存在配置错误(如区域、凭证、表名拼写)。
  • 控制台也返回空:说明索引中确实无匹配数据,需检查索引定义或主表数据是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:28:14