我正在使用AWS Lambda并尝试向AWS DynamoDB写一些东西。我使用以下代码:
var tableName = "locations";
var item = {
deviceId: {
S: event.deviceId
},
timestamps: {
S: event.timestamp
}
}
var params = {
TableName: tableName,
Item: item
};
dynamo.putItem(params, function(err, data) {
if (err) {
context.fail(new Error('Error ' + err));
} else {
context.success(null);
}
});
我收到以下错误:
returns Error ValidationException: One or more parameter values were invalid: Type mismatch for key deviceId expected: S actual: M
答案 0 :(得分:31)
这是因为Nodejs的aws sdk发生了变化!
如果您正在使用:
var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();
然后putItem调用(以及大多数其他调用)的参数已经改变,而是需要:
var tableName = "locations";
var item = {
deviceId: event.deviceId,
timestamp: event.timestamp,
latitude: Number(event.latitude),
longitude: Number(event.longitude)
}
var params = {
TableName: tableName,
Item: item
};
在此处阅读有关新sdk的所有内容:https://github.com/awslabs/dynamodb-document-js-sdk