@Hellek
Люблю говорить и слышать суть

Как построить логику транзакций при большой вложенности?

Привет, в PHP (PDO) есть классный метод PDO::inTransaction (Checks if inside a transaction). Сейчас при переписывании кода на NodeJS (npm пакет "mysql") возникла следующая проблема - есть набор методов которые должны быть запущены внутри транзакции, методы могут быть вызваны как по отдельности, так и внутри друг друга.

createUser() {
	// Нужно начать транзакцию. Или добавляем все данные или возвращаем ошибку
	startTransaction()

	insertPhone() {
		if (success) {
			relatePhoneToUser()
		}
	}

	insertEmail() {
		if (success) {
			relateEmailToUser()
		}
	}
}

// Юзер уже создан, мы просто хотим добавить новый телефон и привязать его. Если по какой-то причине телефон не удасться привязать в отдельной таблице, то номер нужно удалить (можно вручную, но транзакции то для этого и придуманы)
insertPhone() {
	if (success) {
		relatePhoneToUser()
	}
}


В англо интернетах не нашел ответа на данный запрос. Подскажите как правильно построить архитектуру в данном случае?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы