Возврат вывода из вызова AWS.DynamoDB.DocumentClient.Scan () - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть функция, которая возвращает количество записей из таблицы DynamoDB (Вещи):

const table = 'Things';
const region = 'us-east-1';
const profile = 'development';

process.env.AWS_SDK_LOAD_CONFIG = true;
process.env.AWS_PROFILE = profile;

const AWS = require('aws-sdk');
AWS.config.update({ region: region });

function ddb_table_has_records(table_name) {
    const ddb_client = new AWS.DynamoDB.DocumentClient();

    const ddb_query_parameters = {
        TableName: table_name,
        Select: 'COUNT'
    }

    const results = ddb_client.scan(ddb_query_parameters).promise();

    results.then((data) => {
        console.log(data.Count);
        return data;
    }).catch((err) => {
        console.log("Error: ", err);
    })
}

console.log(ddb_table_has_records(table));

Когда я запускаю этот код, я получаю следующее ...

PS C:\> node .\get-count-thing.js
undefined
3951

Я не собираю данные со сканирования в следующем; хотя я вижу это в вызове console.log ():

console.log(ddb_table_has_records(table));

Что я испортил?

1 Ответ

0 голосов
/ 16 мая 2019

Размещение моего исправления на тот случай, если у кого-то возникнет тот же вопрос. Мне пришлось внести два изменения, чтобы получить элементы из таблицы; Мне нужно было ...

  1. ... проект ALL_ATTRIBUTES
  2. ... перебрать коллекцию возвращенных предметов

Следующей была моя функция с изменениями:

function ddb_table_has_records(table_name) {
    const ddb_client = new AWS.DynamoDB.DocumentClient();

    const ddb_query_parameters = {
        TableName: table_name,
        Select: 'ALL_ATTRIBUTES'
    }

    const results = ddb_client.scan(ddb_query_parameters).promise();

    results.then((data) => {
        console.log(data.Count);

        data.Items.forEach((thing) => {
            console.log(thing);
        });

    }).catch((err) => {
        console.log("Error: ", err);
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...