【问题标题】:What is the reason for 'Query condition missed key schema element' in AWS DynamoDb?AWS DynamoDb 中“查询条件丢失关键架构元素”的原因是什么?
【发布时间】:2019-02-27 07:06:22
【问题描述】:

这是我的代码,用于获取所有文本为“制作晚餐”的元素。

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

db.scan(params, (err, data) => {
    if (err)
        console.log(err);
});

我收到此错误:

查询条件缺少关键架构元素:todo_id

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

【问题讨论】:

    标签: node.js amazon-web-services amazon-dynamodb


    【解决方案1】:

    听起来todo_id 是您的主键。您正在尝试查询todoName。不能查询非关键字段。

    您要么需要运行scan 而不是query,要么将查询更改为使用todo_id 而不是todoName,或者将表主键更改为todoName,或者添加全局todoName 上的二级索引。

    【讨论】:

    • 但是scan 获取所有元素并且仅在过滤之后。我想这不是有效的。你的意思是,为了使用query,我肯定需要使用todo_id
    • 查询仅适用于索引字段。您不能对非索引字段运行查询。如果您可以对任何字段运行查询,那么scan 就没有理由存在。如果要运行查询而不是低效扫描,则必须使用在主键或二级索引中定义的字段。
    猜你喜欢
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多