Невозможно правильно получить данные чтения JSON из базы данных DynamoDB для навыка Alexa - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь прочитать данные с DynamoDB и позволить Алексею произнести это.Я успешно получаю данные, просто у меня проблемы с JSON-частью (я новичок в этом и не могу найти ответ в Интернете).

Вот функция, которую я использую для получения данных (из https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.03.html):

var x = DBClient.get(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", 
        JSON.stringify(err, null, 2));
    } else {
         console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
    } });

А вот как я записываю переменную: console.log («Вы можете ожидать»)+ x);

В журналах функций я получаю [object Object] для x.

Я пытался сделать x.Item.Answer, но это не сработало (Ответимя атрибута для данных, которые я пытаюсь получить)

Я пытался использовать JSON.parse для x, но я получил ошибки

Я также попробовал JSON.stringify, который вернулся какошибка «Преобразование круговой структуры в JSON», так как я полагаю, что функция «get» (по которой я не могу найти какую-либо документацию) возвращает уже строковую версию?

Я не знаю, что пытаться больше ...

Как примечание, вот JSON, который я (успешно) возвращаю из базы данных:

{
    "Item": {
        "Answer": "Sunny weather",
        "Question": "What is the weather like today"
    }
}  

1 Ответ

0 голосов
/ 13 марта 2019
    DBClient.get(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", 
        JSON.stringify(err, null, 2));
    } else {
         console.log("GetItem succeeded:", data.Items[0].answer);
         //buisness logic
    } }); 

попробуйте приведенный выше код. Всякий раз, когда мы получаем ответ от Dynamodb, допустим, что вы получаете данные в ответ, тогда объект данных будет содержать атрибут Items, который представляет собой массив элементов, которые вы хотите получить.

...