AWS DynamoDb中“查询条件缺少键架构元素”的原因是什么?

neo*_*neo 2 amazon-web-services node.js amazon-dynamodb

这是我的代码,用于获取文本为“ Make a Dinner”的所有元素。

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



  db.scan(params, (err, data) => {

    if (err) {
      console.log(err);
    }

  });
Run Code Online (Sandbox Code Playgroud)

但出现以下错误:Query condition missed key schema element: todo_id。此错误的原因是什么?如何避免呢?我的表中只有主键,没有排序键。

Mar*_*k B 7

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

你要么需要运行scan,而不是query,或更改查询中使用todo_id,而不是todoName,或更改表的主键是todoName,或者添加一个全局二级索引todoName

  • 查询仅适用于索引字段。您不能对非索引字段运行查询。如果您可以对任何字段运行查询,那么就没有理由存在 `scan`。如果要运行查询而不是低效扫描,则必须使用已在主键或二级索引中定义的字段。 (3认同)