Как выполнить 25+ операций в одной транзакции DynamodB - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть две таблицы: тренеры и команды. У Coach есть: id (ключ раздела) и имя. Команды имеют: id (ключ раздела), name и coachId. Пример:

coaches: [{
    id: '1',
    name: 'bob'
}]
teams: [
    {
        id: 1,
        name: 'alpha'
        coachId: 1
    },
    {
        id: 2,
        name: 'beta'
        coachId: 1
    }
];  

Я хочу удалить тренера с id = 1 и обновить все команды, где coachId = 1, и удалить это поле. Ожидаемый результат:

coach: [];
teams: [
    {
        id: 1,
        name: 'alpha'
    },
    {
        id: 2,
        name: 'beta'
    }
];

Итак, у меня есть 3 операции:

  1. удалить тренера
  2. команда обновления с id = 1
  3. команда обновления с id = 2

Все операции должны быть в транзакции. Итак, я могу использовать transactWriteItems:

dynamodb.transactWriteItems([{
    Delete: {
        Key: {
            id: {
                S: '1',
            },
        },
        TableName: 'Coaches',
    },
}, {
    Update: {
        Key: {
            id: {
                S: '1',
            },
        },
        UpdateExpression: `remove coachId`,
        TableName: 'Teams',
    },
}, {
    Update: {
        Key: {
            id: {
                S: '2',
            },
        },
        UpdateExpression: `remove coachId`,
        TableName: 'Teams',
    },
}]);

Но одна транзакция может содержать только до 25 операций. Итак, если у одного тренера будет 100 команд, это будет провал. Как я могу сделать?

...