Как я могу сделать рекурсивную функцию динамодб короче - PullRequest
0 голосов
/ 10 июля 2019

Привет, у меня есть пара рекурсивных запросов DynamodB, которые работают в Angular, проблема в том, что я хочу использовать массив данных вместо того, чтобы 10 запросов с разными именами запускали их параллелизм и объединяли их вместе. Пример

async getAllBooksSmith() {
//get all books from Publisher  SmithBooks for year 2019
let startkey: any;

let params = {
    TableName: 'books',
    IndexName: 'bookspubindex',
    KeyConditionExpression: '#key = :pbs and #sortkey = :rly',
    ExpressionAttributeValues: {
        ':pbs': 'SmithBooks',
        ':rly': '2019',
    },
    ExpressionAttributeNames: {
        '#key': 'Publisher',
        '#sortkey': 'ReleaseYear'
    },
    ExclusiveStartKey: startkey
}

let items = [];

while (true) {
    const db = await this.getDC();
    const data = await (db as DocumentClient).query(params).promise();
    items = items.concat(data.Items);

    if (!data.LastEvaluatedKey) {
        break;
    }

    params.ExclusiveStartKey = data.LastEvaluatedKey;
}

return items;

};

что я делаю сейчас, это создаю как 10 из этих запросов и делаю это для их одновременного выполнения, вот и пример с 3, чтобы его было легче читать

async getAllPublisherBooks() {

let [Smith, Lowen, Toys] = await Promise.all([this.getAllBooksSmith(), this.getAllBooksLowen(), getAllBooksToys()]);
let everyBooks = await Smith.concat(Lowen, FreeOln);
return everyBooks;

}

Надеюсь, я объяснил, что я хочу сделать с массивом, как этот arr = ['SmithBooks', 'LowenBooks', 'ToysBooks]]

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