2014-10-10 89 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,這就是爲什麼發生錯誤。 所以請檢查您的地圖模板,可能會做同樣的事情。