我已经做了很多搜索,只发现了有关旧SDK的问题,所以希望这不是一个重复的问题!
我正在尝试将Javascript对象存储到DynamoDB实例中。我得到的错误和我正在使用的代码概述如下。
错误:
Unable to add item. Error JSON: {
"message": "One or more parameter values were invalid:
Type mismatch for key File expected: S actual: M",
"code": "ValidationException",
"time": "2016-10-29T19:36:02.317Z",
"requestId": [removed],
"statusCode": 400,
"retryable": false,
"retryDelay": 0
}
代码:
var aws = require('aws-sdk');
var docClient = new aws.DynamoDB.DocumentClient({
"accessKeyId": AWS_ACCESS_KEY_ID,
"secretAccessKey": AWS_SECRET_ACCESS_KEY,
region: 'us-east-1',
endpoint: "https://dynamodb.us-east-1.amazonaws.com"
});
var tableName = AWS_TABLE_NAME;
var params = {
TableName: tableName,
Item: {
ProjID: projID,
File: {
name: fileName,
url: fileUrl
}
}
};
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));
}
callback(true);
});
再次,我确定这是一个相当简单的问题 - 我还没有找到任何文档来帮助我更新。
预先感谢您提供任何帮助!
答案 0 :(得分:0)
文件是表格架构中的属性吗?如果是,并且它被定义为字符串,那么您得到的错误只是表明您正在尝试将地图放入字符串属性。
DynamoDB仅支持字符串和数字键,因此您必须重新访问您的设计。也许您可以将文件信息存储为密钥的字符串,然后在需要时将其作为映射扩展为单独的属性。