2015-10-26 79 views
8

我正在嘗試將AWS Lambda設置爲DynamoDB中的一個小api,並且無法確定是否以及如何將一個對象數組寫入一個鍵。DynamoDB putitem在NodeJs中 - 對象數組

我有一個對象像

{ 
    "teamName": "Team Awesome", 
    "members": [ 
     { 
      "email": "[email protected]", 
      "name": "Bob" 
     }, 
     { 
      "email": "[email protected]", 
      "name": "Alice" 
     } 
    ] 
} 

成員陣列是給我的問題,在文檔,它看起來像它可以做到在考慮的名單類型,但就是沒有例子怎麼怎麼做,並且我正在嘗試嘗試。

那麼是否有可能用這種格式寫一些東西,在這種情況下你怎麼做?

示例代碼 - 我該放什麼?

var AWS = require('aws-sdk'); 
var dynamodb = new AWS.DynamoDB(); 

exports.handler = function(event, context) { 
    var tableName = "GDCCompetition"; 
    var datetime = new Date().getTime().toString(); 

    DynamoDB.putItem({ 
     "TableName": tableName, 
     "Item": { 
      "datetime": { 
       "N": datetime 
      }, 
      "teamName": { 
       "S": event.teamName 
      }, 
      "members": ??? 
     } 
    }); 
} 

回答

14

的文檔不是很明顯,但有一個叫DocClient的事情,你可以通過一個通常的JS對象給它,它會做所有的解析和轉化爲AWS對象(所有類型)。你可以這樣使用它:

var AWS = require("aws-sdk"); 
var DynamoDB = new AWS.DynamoDB.DocumentClient(); 

var params = { 
    TableName: "MyTable", 
    Item: { 
     "teamName": "Team Awesome", 
     "members": [ 
      { 
       "email": "[email protected]", 
       "name": "Bob" 
      }, 
      { 
       "email": "[email protected]", 
       "name": "Alice" 
      } 
     ] 
    } 
}; 

DynamoDB.put(params, function (err) { 
    if (err) { 
     return throw err; 
    } 

    //this is put 
}); 
+0

感謝您的快速答案,但我不明白我是如何動態構建的。我用我目前的測試代碼更新了這個問題。 –

+0

@ErikHonn使用DocumentClient,您不需要動態構建對象!您只需將常規對象傳遞給Item屬性,sdk將爲您執行轉換。 –

+0

聽起來不錯,但我得到的只是「完成請求前退出進程」。 –

相關問題