2017-03-05 3 views
1

リストが存在する場合と存在しない場合のリストの最初の項目に条件を設定しようとしています。リストが最初に存在するかどうかを確認しようとしていますが、DynamoDBは式を短絡していないようです。これに関係なく、このエラーが発生します。 ValidationException:指定された式が、アイテムに存在しない属性を参照しています。DynamoDB Conditionリストが存在しない場合にリスト[0]をチェックするための表現

params.ExpressionAttributeNames = { 
    '#checkIns': 'checkIns' 
}; 
params.ExpressionAttributeValues = { 
    ':newCheckIn': [newDateString], 
    ':justDatePart': justDatePart 
}; 
params.UpdateExpression = 'SET #checkIns = list_append(:newCheckIn, #checkIns)'; 

// make sure task is not already checked in today 
params.ConditionExpression = 
    'attribute_not_exists(#checkIns) OR (NOT begins_with(#checkIns[0], :justDatePart))'; 

return Table.updateAsync({ID}, params); // using dynogels-promisified 

属性が最初に存在するかどうかをチェックすることで、短絡することはありません。また、checkIns [0]を意味のない文字列に置き換えるif_not_exists()を使用しようとしましたが、このエラーが発生します。関数:if_not_exists

誰でもアイデアはありますか?

答えて

1

問題はUpdateExpressionであり、ConditionExpressionではありませんでした。

次の更新は問題が修正されています。

params.UpdateExpression = 'SET #checkIns = list_append(:newCheckIn, if_not_exists(#checkIns, :empty_list))'; 
関連する問題