属性值类型无效:DynamoDB Put 上出现 ValidationException

Tan*_*may 3 node.js amazon-dynamodb

我正在尝试使用nodejs sdk 在 Dynamo 表上放置一个项目。我尝试使用相同的文档和一些其他变体,但似乎没有任何效果。每次我收到同样的错误:

"message":"Invalid attribute value type"
"code":"ValidationException"
"time":"2016-10-11T06:32:26.361Z"
"statusCode":400
"retryable":false
Run Code Online (Sandbox Code Playgroud)

以下是相关代码片段:

var params = {
    TableName: "MY_Table_Name",
    Item: { 
        "stringAtt": "stringValue",
        "boolAtt": true,
        "numAtt": 123,
    },
};
docClient.put(params, function(err, data) {
    if (err) ppJson(err); // an error occurred
    else ppJson(data); // successful response
});
Run Code Online (Sandbox Code Playgroud)

我的表的索引如下:

主要:分区键:stringAtt,排序键:boolAtt
GSI:分区键:boolAtt,排序键:numAtt

我不确定是我的查询错误还是索引结构错误。

not*_*est 8

BOOL 数据类型不能是键属性(即分区键或排序键)。分区或排序键数据类型可以是三种类型(如下所列)。如果您使用类型为'B'的排序键创建了表,则意味着排序键为Binary类型(即不是 Bool)。

编辑:您也不能使用 BOOL 属性作为 GSI 中的分区或排序键。

属性类型:'S | 尼 | 乙'

S - 属性的类型为 String

N - 属性的类型为 Number

B - 属性的类型为 Binary

当使用BOOL类型的键创建表时,API 将抛出以下异常。

Unable to create table. Error JSON: {
  "message": "Member must satisfy enum value set: [B, N, S]",
  "code": "ValidationException",
Run Code Online (Sandbox Code Playgroud)