2015-04-06 97 views
3

我有一個簡單的表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的問題?

+1

確保'options.restricted'是一個有效的'BOOL'值。硬編碼「真」,看它是否有效。哪些屬性可以成爲你的主鍵?此外,空字符串(「」)對於字符串類型的屬性無效。如果您沒有要分配的實際字符串,則只需完全省略該屬性。 – bsd

+1

我也建議你使用DynamoDB Document API來協助編組過程:https://github.com/awslabs/dynamodb-document-js-sdk – bsd

+0

嗨,謝謝你的建議。 Document API看起來非常有用。不幸的是,硬編碼是正確的,因爲限制字段的值不起作用。 – AlexanderF

回答

2

我啓用了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: [[email protected]; line: 1, column: 78] (through reference chain: com.amazo 
naws.services.dynamodbv2.model.PutItemRequest["Item"]->com.amazonaws.services.dy 
namodbv2.model.AttributeValue["BOOL"]) 

根據日誌,它看起來如只支持類型由DynamoDB本地在這個時候有以下幾種:

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

你可以嘗試像一些替代方案:

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

+0

謝謝!查看錯誤列表,DynamoDB Local確實似乎很難用於實際測試。然後我會嘗試dynalite。 – AlexanderF

+0

您是如何爲DynamoDB Local啓用錯誤日誌的? – mkobit

+0

請看看@:http://stackoverflow.com/questions/29525469/how-do-i-enable-dynamodb-local-logging/29525470#29525470 – bsd