[英]AWS DynamoDB Transactions with JavaScript: One or more parameter values were invalid
救救我,欧比万...
我正在尝试做一个docClient.transactWrite(params)
,其中我的params
看起来像(也有其他字段,试图将其保持简短):
{
"TransactItems": [
{
"Put": {
"Item": {
"slug": {
"S": "marbled_crockpot_cheesecake"
},
"tag": {
"S": "metadata"
},
"recipe_name": {
"S": "Marbled Crockpot Cheesecake"
}
},
"TableName": "recipes-table-dev"
}
},
{
"Put": {
"Item": {
"slug": {
"S": "marbled_crockpot_cheesecake"
},
"tag": {
"S": "marbled"
},
"recipe_name": {
"S": "Marbled Crockpot Cheesecake"
}
},
"TableName": "recipes-table-dev"
}
}
]
}
通过查看此示例和官方文档可以知道, 这很好,但是每当我运行它时,都会出现以下错误:
ERROR Error performing transactWrite { cancellationReasons:
[ { Code: 'ValidationError',
Message:
'One or more parameter values were invalid: Type mismatch for key slug
expected: S actual: M' } ],
我应该指出,主分区键是slug (String)
和主排序键tag (String)
。 因此,我不了解Type mismatch for key slug expected: S actual: M
的Type mismatch for key slug expected: S actual: M
短语:如果期望S
,那是我发送的,对吗? 我在任何地方都看不到M
使用文档客户端 (提供比DynamoDB
类更高级别的API)时,请注意以下几点:
文档客户端通过抽象化属性值的概念,简化了在Amazon DynamoDB中处理项目的工作。 此抽象对作为输入参数提供的本机JavaScript类型进行注释,并将带注释的响应数据转换为本机JavaScript类型 。
文档客户端为开发人员提供了使用本地JavaScript类型而非
AttributeValue
的功能,以简化Amazon DynamoDB的JavaScript开发体验。 作为参数传入的JavaScript对象被编组为Amazon DynamoDB所需的AttributeValue
形状。 DynamoDB的响应被DocumentClient
解组到普通的JavaScript对象中。DocumentClient
不接受AttributeValue
来支持本机JavaScript类型 。
这意味着, slug
必须是纯字符串( S
),而不是具有属性类型的映射( M
)。
以下应该工作:
{
"TransactItems": [
{
"Put": {
"Item": {
"slug": "marbled_crockpot_cheesecake",
"tag": "metadata",
"recipe_name": "Marbled Crockpot Cheesecake",
},
"TableName": "recipes-table-dev"
}
},
{
"Put": {
"Item": {
"slug": "marbled_crockpot_cheesecake",
"tag": "marbled",
"recipe_name": "Marbled Crockpot Cheesecake"
},
"TableName": "recipes-table-dev"
}
}
]
}
直接使用DynamoDB
类 (较低级别)时,必须指定属性类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.