如何更新string集(SS)types的Dynamodb中的项目?

我创build了一个String Settypes的属性。 当我创build创build项目和分配typesSS的属性一切正常。 但是,当我尝试更新此属性时,数据types更改为列表(“L”)。

我试试这个:

qw = new AWS.DynamoDB.DocumentClient(); var params = { TableName : "myTable", Key: { "id": somekey }, UpdateExpression: "set ssvar= :arrp", ExpressionAttributeValues: { ":arrp": [ "test", "test2" ] } }; qw.update (etc.) 

这导致在dynamodb中的数据types的改变,而不是一个string集我得到一个列表:

 "ssvar": { "L": [ { "S": "test" }, { "S": "test2" } ] } 

我已经尝试了下面的所有types的解决scheme,但总是我的数据types被改变。

  ExpressionAttributeValues: { ":arrp": "SS": [ "test", "test2" ] } 

我怎样才能更新stringtypes的属性?

这是使用DocumentClient的工件 – StringSet不是JSONtypes。

DocumentClient将StringSet转换为Array本地JavaScripttypes: https : //github.com/aws/aws-sdk-js/blob/master/lib/dynamodb/converter.js#L61 。 然后,客户端将本地JavaScript Array作为DynamoDB列表types进行序列化: https : //github.com/aws/aws-sdk-js/blob/master/lib/dynamodb/converter.js#L12 。

如果您想使用StringSettypes,则可以使用低级API: https : //docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html

截至2015年9月,您可以在DocumentClient中使用createSet函数。

更新 – 添加示例

我修改了你的示例代码来使用这个函数:

 qw = new AWS.DynamoDB.DocumentClient(); var params = { TableName : "myTable", Key: { "id": somekey }, UpdateExpression: "set ssvar= :arrp", ExpressionAttributeValues: { ":arrp": qw.createSet([ "test", "test2" ]) } }; qw.update (etc.)