Как получить конкретный объект из getItem DynamoDB (JavaScript)? - PullRequest
0 голосов
/ 13 марта 2019

получение предмета из моей базы данных aws.«test2» снизу правильно печатает как элемент в моей консоли.Но я хочу получить атрибут / переменную из него в элементе и вернуть его как var test.Как бы я это сделал?Например, если я хотел получить имя атрибута 'problem' и вернуть его?

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));

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

С помощью aws-sdk вы можете превратить Item из ответа DynamoDB в более нормальный вид объекта, используя класс Converter, доступный в SDK:

Так что если 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"
0 голосов
/ 13 марта 2019

Вы просто сможете получить атрибут с обычным доступом к свойству в JavaScript , либо test.attributeName, либо test['attributeName'], где attributeName зависит от того, что вы хотите.В вашем примере это будет problem.

Но вы не должны делать JSON.stringify слишком рано, так как это преобразует тип в строку, и вы больше не сможете получить доступ к свойствам (если вы не анализируетестрока возвращается к объекту).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...