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

DynamoDB查询CLI正常Lambda报错:'key'字段为null不符合约束

问题分析与解决方法

错误原因

  1. 命令类型误用:CLI中执行的是query查询操作,但Lambda代码里用了GetCommand。GetCommand是通过主键获取单条数据的命令,必须指定Key参数,这就是报错Value null at 'key' failed to satisfy constraint的直接原因,你需要用对应query操作的QueryCommand。
  2. 数据类型不匹配:CLI里指定completed是数字类型({"N":"0"}),但代码中传的是字符串'0',即使换了命令也可能查不到目标数据。

修正后的代码

import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import { DynamoDBDocumentClient, QueryCommand } from '@aws-sdk/lib-dynamodb';
const ddbClient = new DynamoDBClient({});
const ddbDocClient = DynamoDBDocumentClient.from(ddbClient);

const ddbCommand = new QueryCommand({
    TableName: 'BatchTable',
    IndexName: 'completed_index',
    KeyConditionExpression: 'completed = :completed',
    ExpressionAttributeValues: {
        ':completed': 0, // 改为数字类型,匹配DynamoDB中的N类型
    },
});

const ddbResponse = await ddbDocClient.send(ddbCommand);

关键修改点

  • 把GetCommand替换为QueryCommand,对应CLI的query操作逻辑
  • 将:completed的值从字符串'0'改为数字0,匹配DynamoDB中存储的数字类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:39:59