@beduin01

Обязательно ли производить добавление данных через транзакцию?

Прочитал документацию по IndexDB, но так и не понял. Обязательно ли производить добавление данных внутри транзакции? Вроде бы есть событие onupgradeneeded. Или оно касается только первичного заполнения БД с учетом версий?

Вроде бы вот такой код тоже работает:
var my_data = [
{"id": 186, "code": "05.10.13", "full_name": "Добыча угля", "short_name": "Добыча угля"}, 
{"id": 187, "code": "05.10.14", "full_name": "Добыча антрацита", "short_name": "Добыча антрацита"},
{"id": 188, "code": "02.10.15", "full_name": "Перевозки грузовые", "short_name": "Перевозки"}	
]

var db;
var request = window.indexedDB.open("MyTestDatabase", 3);

request.onsuccess = function(event) {
  db = event.target.result;
  var objectStore = db.createObjectStore("okveds", { keyPath: "ssn" });

};

request.onupgradeneeded = function(event) { 
	var db = event.target.result;
	for (d of my_data)
	{
		objectStore.add(d)
	}
}
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Если вы вносите что-то одним запросом - не обязательно.

Смысл транзакции - обработать какую-то цепочку дествий, которые нельзя разрывать.
Например, у пользователя есть корзина с заказами, и он пытается ее оплатить.
Нужно
1. списать деньги со счета юзера
2. очистить корзину
3. уменьшить кол-во доступного в магазине товара
4. отправить уведомление службе доставки, мол отвезите вон туда три телевизора и чайник, например.

И вот вы это все делаете БЕЗ транзакции, и на втором пункте молния ударила в серверную, и сгорел блок питания.

Вам все починили, но юзер жалуется: деньги списаны, а товара нет!

А если перед пунктом 1 начать транзакцию, то при возникновении ошибки или сбоя на любом из этапов, откатится вся транзакция.
Деньги вернутся на счет, корзина снова будет наполнена, вот это все.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Cloud4Y Ярославль
от 65 000 до 130 000 ₽
Gaskar Group Москва
от 120 000 ₽
Ceramic 3D Екатеринбург
от 70 000 ₽
17 февр. 2020, в 00:30
1500 руб./за проект
16 февр. 2020, в 22:28
2000 руб./за проект
16 февр. 2020, в 22:03
1200 руб./в час