![](/img/trans.png)
[英]javascript I don't know how to get a specific object with getItem
[英]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));
您應該只能夠通過JavaScript在test.attributeName
或test['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.