我在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的问题?
答案 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"]
你可以尝试一些替代方案: