gpt4 book ai didi

node.js - 当列表可能不存在时,DynamoDB ConditionExpression 检查列表[0]

转载 作者:太空宇宙 更新时间:2023-11-04 00:26:25 34 4
gpt4 key购买 nike

当列表可能存在或可能不存在时,我试图对列表中的第一项设置条件。我试图先检查列表是否存在,但 DynamoDB 似乎没有短路表达式。不管怎样我都会收到此错误:ValidationException:提供的表达式引用了项目中不存在的属性。

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[0] 替换为无意义的字符串,但出现此错误:

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

大家有什么想法吗?

最佳答案

问题出在 UpdateExpression 而不是 ConditionExpression。

以下更新解决了该问题:

  params.UpdateExpression = 'SET #checkIns = list_append(:newCheckIn, if_not_exists(#checkIns, :empty_list))';

关于node.js - 当列表可能不存在时,DynamoDB ConditionExpression 检查列表[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42607143/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com