0

下面的函數應該很簡單吧?這也是我的想法。儘管如此,對於我的生活,我無法弄清楚爲什麼我總是收到一條錯誤消息,告訴我一個「ValidationException」,出現錯誤通知我「Query key condition not supported」。用AWS DocumentClient小於二級索引查詢 - 「查詢鍵條件不支持」

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

+0

是refreshDatetime你的散列鍵? –

+0

它是與索引關聯的分區鍵。 – knu2xs

回答

2

Dynamodb不允許使用任何其他條件,除非「=」上散列/分區鍵。

您可以選擇使用範圍/排序鍵的其他表達式,但不能用於散列鍵。

參考:Documentation link

Another post with similar problem

希望有所幫助。

+0

非常感謝您對文檔的解釋和鏈接。儘管我一直試圖通過文檔來閱讀,但我傾向於在可以找到關於同一主題的文檔的所有不同地方之間迷失方向。感謝您幫助我找到乾草堆裏的針! – knu2xs