我正在使用NodeJS的aws-sdk,並且正在嘗試進行更新,以便如果該項目不存在,則會引發錯誤。我正在使用Expression API而不是傳統的API。這是我設計的例子,不適合我。DynamoDB條件表達式不識別屬性名稱或值
client.update({
TableName: 'User',
Key: {'_id': '10'},
UpdateExpression: 'SET username = :user, password = :pword',
ConditionalExpression: 'attribute_exists(#idKey) AND #idKey = :idVal',
ExpressionAttributeNames: {
'#idKey': '_id'
},
ExpressionAttributeValues: {
':idVal': '10',
':user': 'user10',
':pword': 'password10'
}}, function(err, data){
if(err) console.log(err);
else console.log(data);
});
ValidationException:鍵::在ExpressionAttributeNames在表達式未使用提供價值{#idKey}
我試圖使用兩個屬性名稱以及將所述實際值到表達各種其他ConditionalExpressions。我開始認爲這是一個錯誤。使用傳統的Expected-> Exists與傳統的AttributeUpdate一起工作,但我無法用Expressions演示此功能。
我意識到這是一個古老的問題,但你有沒有找到答案?我正在經歷完全相同的情況。 – Stanley
沒有解決它。由於不相關的原因,我最終轉向了另一個數據庫,但我希望再次使用它來獲得新的保護。我有點失望,這個問題仍然懸而未決。如果我可以在我的新項目上解決它,我會發布更新。 – Nikordaris
我發佈了一個類似的問題,並得到了一個解決方案。請參閱http://stackoverflow.com/questions/41873769/dynamodb-how-to-prevent-creating-a-new-item-in-updateitem-if-the-item-does-not/41874889?noredirect=1#comment70932075_41874889 – Stanley