所以我在DynamoDB中有一个项目:
{
"id": "1",
"foo": "bar"
}
我想为所述项添加一个新属性,该属性为:
{
"newAttr": [{ "bar": 1 }, { "bar": 2 }, { "bar": 3 }]
}
现在我在JS中使用AWS-SDK这样做:
client.update({
ExpressionAttributeNames: { '#newAttr': 'newAttr' },
ExpressionAttributeValues: { ':newAttr': newAttr },
Key: { "id": "1" },
TableName: "foo",
UpdateExpression: "SET #newAttr = :newAttr"
}, callback)
但是,我收到一个错误:
ExpressionAttributeValues包含无效值:一个或多个参数值无效:AttributeValue可能不包含key的空字符串:newAttr
所以,如果我要 JSON.stringify(newAttr)
那么它希望这个新属性是一个字符串,我希望它是一个列表 .
那么我做错了什么?
1 回答
我在一开始就遇到了这些问题 . 我确定你在所有低级代码中浪费时间与DynamoDB进行交互 .
使用ODM(ORM Like)进行文档存储,为您处理所有障碍 .
https://github.com/clarkie/dynogels
是我用过的,会让你的生活更轻松 .
无法在根级别使用DynamoDB存储空字符串 . 您可以在嵌套对象中使用它 .
DynamoDB允许的数据类型:
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html
希望这可以帮助 .