簡體   English   中英

如何從getItem dynamoDB(JavaScript)檢索特定對象?

[英]How to retrieve specific object from a getItem dynamoDB (JavaScript)?

從我的AWS數據庫中獲取項目。 下面的“ test2”作為控制台中的一項正確打印。 但是我想從項目中獲取屬性/變量,並將其作為var測試返回。 我該怎么辦? 例如,如果我想獲取屬性名稱“問題”並返回它?

var test;

ddb.getItem(param, function(err, data1) {
  if (err) {
    console.log("Error", err);
  } else {
      var test2 = JSON.stringify(data1);

    console.log("Get Success",  test2);
    test = JSON.stringify(data1, undefined, 1);

  }
});
speechOutput = `Ok ${test}. Thanks, I have reported this. Do you have anything else to report?`;

    callback(sessionAttributes,
         buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession));

您應該只能夠通過JavaScripttest.attributeNametest['attributeName']中獲得具有常規屬性訪問權限 test['attributeName']其中attributeName取決於您想要的內容。 在您的示例情況下,這將是problem

但是您不應該過早地執行JSON.stringify ,因為那樣會將類型轉換為字符串,並且您將無法再訪問屬性(除非您將字符串解析回對象)。

使用aws-sdk,您可以使用SDK中提供的Converter類將DynamoDB響應中的項目變成外觀更普通的對象:

因此,如果data1看起來像這樣:

const data1 = {
  Item: {
   "AlbumTitle": {
     S: "Songs About Life"
   }, 
   "Artist": {
     S: "Acme Band"
   }, 
   "SongTitle": {
     S: "Happy Day"
    }
  }
}

像這樣將data1.Item傳遞到unmarshall函數中:

const flat = AWS.DynamoDB.Converter.unmarshall(data1.Item);

現在, flat將如下所示:

{
  "AlbumTitle": "Songs About Life",
  "Artist": "Acme Band",
  "SongTitle": "Happy Day"
}

因此,您可以像普通方式一樣訪問屬性:

console.log(flat.Artist) #=> "Acme Band"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM