当列表可能不存在时,DynamoDB ConditionExpression检查列表
我试图把条件放在列表中的第一个项目上,当列表可能存在也可能不存在。 我正在尝试检查列表是否首先存在,但是DynamoDB似乎没有将expression式短路。 不pipe:ValidationException:提供的expression式指的是一个在项目中不存在的属性。
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
我似乎无法通过检查该属性是否先存在而使其短路。 此外,我试图用if_not_exists()用一个无意义的stringreplacecheckIns [0],但我得到这个错误:
ValidationException:无效ConditionExpression:条件expression式中不允许使用该函数; 函数:if_not_exists
有人有主意吗?
问题是UpdateExpression而不是ConditionExpression。
以下更新修复了这个问题:
params.UpdateExpression = 'SET #checkIns = list_append(:newCheckIn, if_not_exists(#checkIns, :empty_list))';
- 在Node中本地使用dynamodb时,“无法从任何提供程序加载凭据”
- 使用Amazon KMSencryption值,使用带有Lambda的DynamoDB存储/检索(NodeJS)
- NodeJS:如果不存在,则在dynamodb中插入logging
- 不能使用UpdateItem从列表中删除元素
- AWS.DynamoDB.DocumentClient不提供put的数据
- 用Lambda查询DynamoDB什么也不做
- AWS node.js在失败的batchWrite()上自动重试
- 是否有一个好的对象映射器可以在nodejs中使用的Amazons dynamodb(通过aws sdk)?
- 如何获取aws-dynamoDB中的所有字段?