2016-11-11 62 views
0

我只是想向DynamoDB中的號碼集添加號碼。這個表達式與一個無類型的列表一起工作。但爲了節省空間,因爲它只是存儲數字,所以我將所有內容都移到了普通數字集中。現在,無論我多麼鼓勵,我都無法讓它通過。如何使用Node.js將號碼添加到DynamoDB號碼集

var phoneID = req.body.PhoneID; 
var category = req.body.ratingCategory; 
var ratingToAdd = [Number(req.body.rating)] 

var dbparams = { 
"TableName": "Venue_Ratings", 
Key: { 
    "PhoneID" : phoneID 
}, 
"UpdateExpression": "SET #categoryName = list_append(#categoryName, :rating)", 
"ExpressionAttributeNames" : { 
    "#categoryName" : category 
}, 
"ExpressionAttributeValues": { 
    ":rating": ratingToAdd 
}, 
"ReturnValues": "ALL_NEW" 
}; 

此錯誤被拋出An operand in the update expression has an incorrect data type

我還試圖改變更新表達式的表達式ADD代替像這樣ADD #categoryName :rating

我試過將ratingToAdd更改爲不在數組中的普通數字,數組中的字符串以及不在數組中的普通字符串。

我打電話給db使用docClient.update方法。

我已驗證數據庫中的集合實際上是數字集並且它們存在。

我在這裏錯過了什麼?謝謝您的幫助。

回答

0

下面的代碼應該將數字添加到數字集(即DynamoDB數據類型'NS')。

使用此功能在UpdateExpression地址: -

docClient.createSet([Number(5)]) 

代碼: -

var params = { 
     TableName : "Movies", 
     Key : { 
      "yearkey" : 2016, 
      "title" : "The Big New Movie 1" 
     }, 
     UpdateExpression : "ADD #category :categorySet", 
     ExpressionAttributeNames: { 
      '#category' : 'category' 
     }, 
     ExpressionAttributeValues: {':categorySet' : docClient.createSet([Number(5)])}, 
     ReturnValues: 'UPDATED_NEW' 
    };