首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当列表可能不存在时检查list[0]的DynamoDB ConditionExpression

当列表可能不存在时检查list[0]的DynamoDB ConditionExpression
EN

Stack Overflow用户
提问于 2017-03-05 18:22:28
回答 1查看 1.3K关注 0票数 1

当列表可能存在也可能不存在时,我正在尝试将条件放在列表的第一项上。我尝试先检查列表是否存在,但DynamoDB似乎没有缩短表达式。无论如何,我都会得到这个错误: ValidationException:提供的表达式引用了项目中不存在的属性。

代码语言:javascript
复制
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()将checkIns替换为一个无意义的字符串,但得到了以下错误:

ValidationException:无效的ConditionExpression:条件表达式中不允许使用该函数;function: if_not_exists

有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-05 18:31:54

问题出在UpdateExpression而不是ConditionExpression。

以下更新修复了此问题:

代码语言:javascript
复制
  params.UpdateExpression = 'SET #checkIns = list_append(:newCheckIn, if_not_exists(#checkIns, :empty_list))';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42607143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档