我尝试使用list_append函数将String附加到DynamoDB中的现有StringSet。任何人都可以看到这段代码有什么问题吗?我已阅读并重新阅读亚马逊文档,但似乎无法找到问题。
$this->objClient->updateItem( array(
'TableName' => 'mytable',
'Key' => array(
'sEmailAddress' => array(
'S' => 'somebody@email.com'
)
),
"ExpressionAttributeValues" => array(
':vServices' => array(
"SS" => array(
'value to append'
)
)
),
"ExpressionAttributeNames" => array(
"#serv" => "sServices"
),
'UpdateExpression' => 'set #serv = list_append( #serv, :vServices )'
));
生成的错误消息是:
无效的UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:SS
根据我的阅读,我认为两个操作数都必须是StringSets。我没有尝试将第二个参数更改为单个字符串(类型' S'),但仍然遇到同样的错误:
无效的UpdateExpression:运算符或函数的操作数类型不正确;运算符或函数:list_append,操作数类型:S
非常感谢任何帮助!
答案 0 :(得分:4)
list_append
在两个列表上运行。要将项目添加到集合,您可以使用ADD
运算符,而不是使用SET
的结果调用list_append
。