DynamoDB Local PutItem中的布尔字段

时间:2015-04-06 15:29:52

标签: javascript amazon-dynamodb

我在DynamoDb本地有一个简单的表,并尝试放置这样的项目:

var options = {name : "test",
            creator : "Testcreator", description : "test",
            moderators : ["Testmoderator"]};

var obj = {
  name: {"S": options.name},
  restricted: {"BOOL": options.restricted || false},
  creator: {"S": options.creator},
  description: {"S": options.description || ""},
  moderators: {"SS" : options.moderators || []}
};
var params = {
  "TableName": "MY_TABLE",
  "Item": obj,
  Expected: {
    name: {Exists: false}
  }
};
dynamodb.putItem(params, function (err, data) {
    ppJson(err);
});

根据文档,允许使用布尔值,当我在DynamoDB Local shell中尝试此代码时,我收到以下错误:

"code":"UnexpectedParameter",
"message":"Unexpected key 'BOOL' found in params.Item['restricted']"
...

我的代码中是否有错误,或者这是javascript API的问题?

1 个答案:

答案 0 :(得分:2)

我启用了DynamoDB Local日志记录以查看引擎生成的内部错误,这是我尝试放置像您这样的项目后得到的内容:

[LocalDynamoDBServerHandler] - body:
{"TableName":"MY_TABLE","Item":{"name":{"S":"test"},"restricted":{"BOOL":true},"
creator":{"S":"Testcreator"}}}
_LOG_2015-04-07 08:25:26,549 ERROR [com.amazonaws.services.dynamodbv2.local.serv
er.LocalDynamoDBServerHandler] - Unknown error
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized f
ield "BOOL" (class com.amazonaws.services.dynamodbv2.model.AttributeValue), not
marked as ignorable (6 known properties: , "SS", "BS", "B", "S", "NS", "N"])
 at [Source: [B@806204; line: 1, column: 78] (through reference chain: com.amazo
naws.services.dynamodbv2.model.PutItemRequest["Item"]->com.amazonaws.services.dy
namodbv2.model.AttributeValue["BOOL"])

根据日志,目前 DynamoDB Local 的支持类型似乎如下:

["SS", "BS", "B", "S", "NS", "N"]

你可以尝试一些替代方案:

https://www.npmjs.com/package/dynalite