我正试图" putItem"一个新的记录到dynamoDB数据库但未能尝试在数据中包含一个数组。我的params.Item看起来如下:
msg.params.Item = {
fileName: {S: "filename"}, // database is keyed on filename
userEmail: {S: "emailaddress"},
transcription: {S: "text here"},
features: {L: [ { "relevance": {S: "0.900906"}, "text": {S: "keyword"}} ]}
};
我反复收到错误" UnexpectedParameter:Unexpected key' L'发现于params.Item [' features']"。我假设我已经以某种方式格式化了"功能"数组不正确,但我无法弄清楚我的错误在哪里。我尝试了很多不同的数组咒语。任何帮助表示赞赏,因为使用数组工作dynamoDB putItem javascript的网上示例令人震惊。
仅供参考:我在Node-RED中使用node.js,这可能解释了奇怪的代码,但我之前使用Cloudant数据库工作得很好。只有dynamoDB在这个数组上窒息。
答案 0 :(得分:2)
你错过M
地图:
features: {L: [ { "relevance": {S: "0.900906"}, "text": {S: "keyword"}} ]}
应该是
features: {L: [ {M: {"relevance": {S: "0.900906"}, "text": {S: "keyword"}}} ]}
答案 1 :(得分:0)
以下代码应成功创建项目。只要遵循以下映射,就不需要单独提及DynamoDB数据类型。
JavaScript类型 - > DynamoDB类型
数组 - > →
对象 - >图
JavaScript data type to DynamoDB data type mapping
var docClient = new AWS.DynamoDB.DocumentClient();
var table = "files";
var params = {
TableName:table,
Item:{
"fileName" : "file1",
"userEmail" : "abc@gmail.com",
"transcription" : "transcription text",
"features" : [{ "relevance": "0.900906", "text": "keyword"}]
}
};
console.log("Adding a new item...");
docClient.put(params, function(err, data) {
if (err) {
console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Added item:", JSON.stringify(data, null, 2));
}
});
答案 2 :(得分:0)
您可能需要查看apiVersion
。我遇到了这个问题,因为我没有使用最新版本,2012-08-10
,而不是2011-12-05
。