DynamoDB本地PutItem中的布尔字段

Boolean fields in DynamoDB Local PutItem

本文关键字:布尔 字段 本地 PutItem DynamoDB      更新时间:2023-09-26

我在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本地shell中尝试此代码时收到以下错误:

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

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

我启用了DynamoDB本地日志记录,以查看引擎生成的内部错误,下面是我在尝试放置类似您的项目后得到的结果:

[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