Node.js 什么是';查询条件缺少关键架构元素';在AWS DynamoDb中?

Node.js 什么是';查询条件缺少关键架构元素';在AWS DynamoDb中?,node.js,amazon-web-services,amazon-dynamodb,Node.js,Amazon Web Services,Amazon Dynamodb,下面是我的代码,用于获取所有文本为“makea pany”的元素 const params = { TableName: 'todos', KeyConditionExpression: 'todoName = :t', ExpressionAttributeValues: { ':t': 'Make a dinner' } }; db.scan(params, (err, data) => { if (err) console.log

下面是我的代码,用于获取所有文本为“makea pany”的元素

const params = {
    TableName: 'todos',
    KeyConditionExpression: 'todoName = :t',
    ExpressionAttributeValues: { ':t': 'Make a dinner' }
  };

db.scan(params, (err, data) => {
    if (err)
        console.log(err);
});
我得到这个错误:

查询条件缺少关键架构元素:todo\U id


这个错误的原因是什么?如何避免呢?我的表中只有主键,没有排序键。

听起来好像todo\u id是您的主键。您正在尝试查询
todoName
。不能查询非关键字段


您需要运行
扫描
而不是
查询
,或者将查询更改为使用
todo\u id
而不是
todoName
,或者将表主键更改为
todoName
,或者在
todoName

上添加一个全局二级索引,但
scan
只在过滤之后获取所有元素。我想这是没有效率的。你的意思是,为了使用
query
,我肯定需要使用
todo\u id
?查询只对索引字段有效。不能对非索引字段运行查询。如果您可以对任何字段运行查询,那么就没有理由存在
scan
。如果要运行查询而不是低效扫描,则必须使用在主键或辅助索引中定义的字段。