如何更新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.)
- 如何在Amazon Dynamodb中使用聚合函数
- 不能更新Dynamo Db表,得到ValidationException
- DynamoDB Local在closures实例后删除数据
- DynamoDB createTable如果不存在
- node.js:如何在创build表时在DynamoDB中添加非键属性?
- AWS DynamoDB查询不对BOOL值进行筛选
- dynamodb的最大项目长度(64k)的实用解决scheme和no-sql缺乏表连接
- 我们如何根据索引更新dynamodb表(不是基于主键和范围键)
- 为什么使用Limit和FilterExpression进行DynamoDB扫描不会返回符合filter要求的项目?