AWS SDK与DynamoDB和putItem有关

我正在尝试使用aws-sdk与AWS的dynamodb进行交互

这是我的代码:

 DynamoDB.putItem({ "TableName": tblName, "Item": { "UserId": { "N": obj.user_id.toString() }, "Identifier": { "S": obj.identifier }, "ReferralToken": { "S": obj.referral_token }, "CampaignId": { "N": obj.campaign_id.toString() }, "FirstName": { "S": obj.first_name }, "LastName": { "S": obj.last_name }, "Gender": { "S": obj.gender }, "BirthDate": { "S": obj.birthdate }, "Username": { "S": obj.username }, "MobileNumber": { "S": obj.mobile_number }, "PostalCodeText": { "S": obj.postal_code_text }, "Classification": { "S": obj.classification }, "DeliveryEmail": { "S": obj.delivery_email.toString() }, "DeliverySMS": { "S": obj.delivery_sms.toString() } } }, function (err, data) { console.log(err); console.log(data); }); 

我收到的错误是

 { [ValidationException: Supplied AttributeValue is empty, must contain exactly one of the supported datatypes] message: 'Supplied AttributeValue is empty, must contain exactly one of the supported datatypes', code: 'ValidationException', time: Fri Oct 10 2014 10:15:25 GMT-0500 (CDT), statusCode: 400, retryable: false } 

不知道我在做什么错

根据Put Item文件,

添加项目时,主键属性是唯一必需的属性。 属性值不能为空。 string和二进制types属性的长度必须大于零。 设置types属性不能为空。 具有空值的请求将被拒绝,并出现ValidationExceptionexception。

所以确保所有的值都是非空的,并且所有的string长度都大于零。

在我的情况下,我得到了同样的问题,因为从映射模板发送无效的参数。

 #set($inputRoot = $input.path('$')) { "userId": "$input.params('userId')", "userEmail": "$input.params('userEmail')", "userName": "$input.params('userName')", "userPassword": "$input.params('userPassword')" } 

在这里我发送了额外的参数userId,这就是为什么发生错误。 所以请检查你的地图模板,可能你做同样的事情。