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

DynamoDB查询报错:缺少键架构元素daily_answers,求问题排查

DynamoDB查询报错"Query condition missed key schema element: daily_answers"的解决方法

你的核心问题是查询条件里的分区键字段名和表实际的键名不匹配:

你明确说明表的分区键是daily_answers,但代码的KeyConditionExpression里却写了partition_key = :pk——DynamoDB会把partition_key当作实际的字段名去查找,而你的表里根本没有这个字段,自然会报错提示缺少daily_answers这个键架构元素。

修改后的代码

把KeyConditionExpression里的partition_key替换成实际的分区键字段名daily_answers即可:

const sevenDaysAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
const sevenDaysAgoTs = Math.floor(sevenDaysAgo.getTime() / 1000);
let dbQueryResult;

// Query the last 7 days of answers
const queryParams = {
  TableName: tableName,
  // 替换分区键字段名为实际的daily_answers
  KeyConditionExpression: 'daily_answers = :pk AND #ts >= :seven_days_ago',
  ExpressionAttributeNames: {
    '#ts': 'timestamp',
  },
  ExpressionAttributeValues: {
    ':pk': 'daily_answers',
    ':seven_days_ago': sevenDaysAgoTs,
  },
  ScanIndexForward: false,
};

async function fetchAnswers() {
    try {
      const data = await dynamodb.query(queryParams).promise();
      dbQueryResult = data.Items.map((item) => item.answers);
    } catch (err) {
      console.error('Error querying DynamoDB:', JSON.stringify(err, null, 2));
    }
  }

await fetchAnswers();

额外确认

如果你的表分区键字段名不是daily_answers(比如实际字段名是category,只是该字段的值为daily_answers),那你需要把KeyConditionExpression里的字段名改成实际的字段名(比如category = :pk),同时保持:pk的值为daily_answers。但根据你的描述,分区键就是daily_answers,所以上面的修改就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:53:15