DynamoDB向数组添加对象报错:if_not_exists操作数数量不正确
DynamoDB数组更新报错解决方案
错误原因
报错的核心问题是**if_not_exists函数的参数数量不符合要求**:该函数必须接收两个参数——第一个是要检查的属性名,第二个是属性不存在时返回的默认值。你的代码中仅传入了#tickers一个参数,导致操作数数量错误。
修正后的代码
需要补充if_not_exists的第二个参数,并在ExpressionAttributeValues中定义默认空数组,同时正确使用list_append完成数组追加:
export async function postTrade(position) { let params = { Key: { PK: 'stocks' }, UpdateExpression: 'set #tickers = list_append(if_not_exists(#tickers, :empty_list), :tickers)', ExpressionAttributeNames: { '#tickers': 'tickers' }, ExpressionAttributeValues: { ':tickers': [position], ':empty_list': [] // 新增默认空数组,处理属性不存在的情况 }, TableName: 'stockTable' }; await docClient.update(params).promise(); }
代码说明
if_not_exists(#tickers, :empty_list):如果tickers属性不存在,返回空数组;如果已存在,则返回当前的tickers数组,确保后续list_append操作始终能正常执行。list_append(原数组, 新元素数组):将包含目标元素的:tickers数组追加到原数组末尾,实现向数组推入对象的需求。
内容的提问来源于stack exchange,提问作者user6680
相关产品推荐
相关产品推荐

