2016-10-29 50 views
0

我覺得我錯過了一些明顯的東西,但是對於DynamoDB而言,文檔有點混亂,特別是對於NodeJS(我確實看到很多Java)。通過NodeJS將對象保存到DynamoDB實例

我已經做了相當多的搜索,只發現了有關舊SDK的問題,所以希望這不是一個重複的問題!

我正在嘗試將JavaScript對象存儲到我的DynamoDB實例中。我收到的錯誤和我使用的代碼概述如下。

錯誤:

Unable to add item. Error JSON: { 
    "message": "One or more parameter values were invalid: 
     Type mismatch for key File expected: S actual: M", 
    "code": "ValidationException", 
    "time": "2016-10-29T19:36:02.317Z", 
    "requestId": [removed], 
    "statusCode": 400, 
    "retryable": false, 
    "retryDelay": 0 
} 

代碼:

var aws = require('aws-sdk'); 
var docClient = new aws.DynamoDB.DocumentClient({ 
    "accessKeyId": AWS_ACCESS_KEY_ID, 
    "secretAccessKey": AWS_SECRET_ACCESS_KEY, 
    region: 'us-east-1', 
    endpoint: "https://dynamodb.us-east-1.amazonaws.com" 
}); 
var tableName = AWS_TABLE_NAME; 
var params = { 
    TableName: tableName, 
    Item: { 
     ProjID: projID, 
     File: { 
      name: fileName, 
      url: fileUrl 
     } 
    } 
}; 
docClient.put(params, function (err, data) { 
    if (err) { 
     console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("Added item:", JSON.stringify(data, null, 2)); 
    } 
    callback(true); 
}); 

再次,我敢肯定,這是一個相當簡單的問題 - 我只是還沒有完全發現了在更新的任何文件,以幫助我。

在此先感謝您的幫助!

回答

0

是在您的表的模式中文件屬性?如果是,它被定義爲一個字符串,那麼你得到的錯誤只是表明你正在試圖把一個映射到一個字符串屬性。

DynamoDB只支持字符串和數字鍵,因此您必須重新訪問您的設計。也許您可以將文件信息作爲密鑰的字符串存儲,然後在需要時將其作爲地圖擴展爲單獨的屬性。

+0

感謝您的幫助!我最終將Javascript Object進行了字符串化,然後獲取它,將其重新解析爲Object。 –

相關問題