使用AWS DocumentClient小于二级索引查询 - “不支持查询键条件”

时间:2016-11-18 04:52:09

标签: javascript node.js amazon-web-services amazon-dynamodb aws-lambda

下面的功能,应该很简单吧?这也是我的想法。尽管如此,对于我的生活,我无法弄清楚为什么我一直收到错误,通知我“ValidationException”,但错误告诉我“Query key condition not supported。”

const getUpdated = (refreshDatetime, callback) => {

  refreshDatetime = parseInt(refreshDatetime);

  docClient.query({
    TableName: 'aw-reach',
    IndexName: 'updateDatetime-index',
    KeyConditionExpression: ':refreshDatetime < updateDatetime',
    ExpressionAttributeValues: {
      ':refreshDatetime': refreshDatetime,
    }
  }, (error, data) => {
    if (error) callback(error, null);
    callback(null, data.Items);
  });
};

只是为了确保我没有做任何其他令人难以置信的愚蠢(也是一个明显的可能性),这是我用来测试的片段。

const refreshDatetime = Date.parse('01 Jan 2015');
getUpdated(refreshDatetime, (error, response) => {
  console.log(JSON.stringify(response));
});

欢迎并且非常感谢洞察力和想法,因为编写代码,即使是这个小代码,也绝对不是我最强大的人才!

更新:要添加其他详细信息,我的哈希键为reachId,与我的二级索引关联的分区键为updateDatetime

enter image description here

1 个答案:

答案 0 :(得分:2)

Dynamodb不允许在哈希/分区键上使用除“=”之外的任何其他条件。

您可以选择将其他表达式用于Range / sort键,但不能用于Hash键。

参考:Documentation link

Another post with similar problem

希望有所帮助。