2016-10-11 70 views
0

我正在嘗試使用nodejs sdk在Dynamo Table上執行放置項目。我嘗試使用相同的文件和其他一些變化,但似乎沒有任何工作。每次我收到了同樣的錯誤:無效的屬性值類型:DynamoDB上的ValidationException Put

"message":"Invalid attribute value type" 
"code":"ValidationException" 
"time":"2016-10-11T06:32:26.361Z" 
"statusCode":400 
"retryable":false 

以下是相關的代碼片段:

var params = { 
    TableName: "MY_Table_Name", 
    Item: { 
     "stringAtt": "stringValue", 
     "boolAtt": true, 
     "numAtt": 123, 
    }, 
}; 
docClient.put(params, function(err, data) { 
    if (err) ppJson(err); // an error occurred 
    else ppJson(data); // successful response 
}); 

我的表的索引如下:

Primary: Partition Key: stringAtt, Sort Key: boolAtt
GSI: Partition Key: boolAtt, Sort Key: numAtt

我不知道這是否是我的查詢或錯誤的索引結構。

回答

0

BOOL數據類型不能是鍵屬性(即分區或排序鍵)。分區或排序鍵數據類型可以是三種類型(下面列出)。如果您使用類型爲'B'的Sort鍵創建表,則表示該排序鍵類型爲二進制(即不是Bool)。

AttributeType: 'S | N | B'

S - the attribute is of type String

N - the attribute is of type Number

B - the attribute is of type Binary

當表與類型BOOL的密鑰創建的API會拋出下面的異常。

Unable to create table. Error JSON: { 
    "message": "Member must satisfy enum value set: [B, N, S]", 
    "code": "ValidationException", 
+0

謝謝,有什麼建議解決這個問題的方法?我的要求是獲取具有指定布爾值true/false的所有項目。 – Tanmay

+0

您必須掃描表以獲取boolAttribute = true/false的所有項目。 – notionquest

+0

您也可以使用數字類型,只限制使用值0和1。 這會導致大規模問題,但考慮到您的設計,我懷疑您會在該範圍內。 – lod

相關問題