2014-10-10 120 views
1

我试图使用aws-sdk与AWS的dynamodb与DynamoDB和putItem

这里互动AWS SDK的问题是我的代码:

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 } 

不知道我在做什么错

+1

错误说,提供的属性是空的,你能检查所有来自“obj”的值是否为空。 – 2014-10-11 05:40:24

回答

2

根据Put Item d ocumentation,

当您添加项目时,主键属性是唯一必需的属性。属性值不能为空。字符串和二进制类型属性的长度必须大于零。设置类型属性不能为空。具有空值的请求将被拒绝,并产生ValidationException例外。

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

0

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

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

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