我编写了一个在AWS上调用lambda函数的脚本,这个lambda应该将记录写入Dynamo表。
大多数时间写的正确格式是:
"yearOfBirth": "1973/01/01",
"yearsOfExperience": "5 or more years",
"zipCode": "60657"
有一些写得像这样:
"yearOfBirth": {
"S": "1973/01/01"
},
"yearsOfExperience": {
"S": "5 or more years"
},
"zipCode": {
"S": "60657"
}
是什么导致这种情况?
编辑:
我使用的代码,我传递给docClient.put()
var profile = require('../model/userProfile.js');
var _ = require('lodash');
module.exports.save = function(userId, data, tableName, cb) {
_(data).forIn(function(value, key) {
var keyAttr = key;
var valAttr = value;
var params = {
TableName: tableName,
Key: {
id: userId
},
UpdateExpression: 'SET #attrName = :attrValue',
ExpressionAttributeNames: {
'#attrName': keyAttr
},
ExpressionAttributeValues: {
':attrValue': valAttr
}
};
profile.appendDataToUser(params, cb);
});
};
profile.appendDataToUser只是调用docClient.put()
答案 0 :(得分:0)
示例代码很有用。但是,我怀疑您可能正在使用AWS.DynamoDB.DocumentClient
来编写记录并同时指定字段类型。如果您使用的是AWS.DynamoDB.DocumentClient
,则不需要指定字段类型,您只需传递一个普通的javascript对象即可。但是如果您使用的是AWS.DynamoDB
,则需要指定字段类型。
使用AWS.DynamoDB
var dynamodb = new AWS.DynamoDB();
dynamodb.putItem({
TableName: 'user',
Item: {
"yearOfBirth": {
"S": "1973/01/01"
},
"yearsOfExperience": {
"S": "5 or more years"
},
"zipCode": {
"S": "60657"
}
}
});
使用AWS.DynamoDB.DocumentClient
var dynamodb = new AWS.DynamoDB.DocumentClient();
dynamodb.put({
TableName: 'user',
Item: {
"yearOfBirth": "1973/01/01",
"yearsOfExperience": "5 or more years",
"zipCode": "60657"
}
});