下面的功能,应该很简单吧?这也是我的想法。尽管如此,对于我的生活,我无法弄清楚为什么我一直收到错误,通知我“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
。
答案 0 :(得分:2)
Dynamodb不允许在哈希/分区键上使用除“=”之外的任何其他条件。
您可以选择将其他表达式用于Range / sort键,但不能用于Hash键。
Another post with similar problem
希望有所帮助。