R
R
Roman Basharin2018-07-29 18:01:09
MySQL
Roman Basharin, 2018-07-29 18:01:09

How to build transaction logic with large nesting?

Hello, PHP (PDO) has a cool method PDO::inTransaction (Checks if inside a transaction). Now, when rewriting the code in NodeJS (npm package "mysql"), the following problem arose - there is a set of methods that must be run inside a transaction, methods can be called both individually and inside each other.

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

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

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

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

I did not find an answer to this request in the English Internet. Could you tell me how to build the architecture in this case?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question