Транзакции и CRUD
Добавляйте, читайте, обновляйте и удаляйте записи.
«Транзакции и CRUD» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 4 уроков всего.
Всё выполняется внутри transaction
В IndexedDB все чтения и записи выполняются внутри transaction. transaction объединяет операции, поэтому либо все они выполняются успешно, либо все откатываются, сохраняя согласованность данных.
Запуск transaction
Создайте её с помощью db.transaction(storeNames, mode). Режимом является 'readonly' (по умолчанию) или 'readwrite' для изменений.
const tx = db.transaction('notes', 'readwrite');
const store = tx.objectStore('notes');Получение хранилища объектов
Из transaction получите нужное хранилище объектов с помощью tx.objectStore(name). Все методы CRUD находятся в этом хранилище.
const tx = db.transaction('notes', 'readwrite');
const store = tx.objectStore('notes');
// store.add / get / put / deleteДобавление записей
store.add(value) добавляет новую запись. Операция завершается ошибкой, если запись с таким ключом уже существует, что защищает от случайной перезаписи.
const store = tx.objectStore('notes');
const req = store.add({ id: 1, text: 'Buy milk' });
req.onsuccess = () => console.log('added with key', req.result);Чтение записи
store.get(key) получает одну запись по её ключу. Результат поступает в обработчик onsuccess запроса как request.result (значение undefined, если запись не найдена).
const req = store.get(1);
req.onsuccess = () => {
console.log('record:', req.result);
};Обновление с помощью put
store.put(value) добавляет или заменяет запись. В отличие от add, этот метод перезаписывает существующую запись с таким же ключом, поэтому идеально подходит для обновлений.
store.put({ id: 1, text: 'Buy milk and eggs' });
// Replaces the existing record with id 1.Удаление записи
store.delete(key) удаляет запись с указанным ключом. Операция завершается успешно, даже если такой записи не существует.
const req = store.delete(1);
req.onsuccess = () => console.log('deleted');Очистка хранилища
store.clear() сразу удаляет все записи из хранилища объектов. Используйте этот метод для сброса кэшированных данных.
store.clear();
// All records in 'notes' are removed.Завершение transaction
Сама transaction вызывает oncomplete, когда все её операции зафиксированы, а при сбое — onerror или onabort. Используйте oncomplete, чтобы убедиться, что записи надёжно сохранены.
tx.oncomplete = () => console.log('all changes saved');
tx.onerror = () => console.log('transaction failed');Автоматическая фиксация
transaction автоматически фиксируется, когда управление возвращается в цикл событий и нет ожидающих запросов. Нельзя сохранять её открытой во время await несвязанной асинхронной работы — выполняйте все операции с хранилищем вместе.
// Queue operations synchronously within the same tx:
store.add({ id: 2, text: 'A' });
store.add({ id: 3, text: 'B' });
// Both commit together when tx completes.Обзор CRUD
Четыре основные операции соответствуют следующим действиям:
- Создание:
add - Чтение:
get - Обновление:
put - Удаление:
delete
Все они выполняются внутри транзакции, гарантирующей согласованность данных.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете транзакции и CRUD.
Итоги
Вы изучили транзакции и CRUD:
- Начинайте с
db.transaction(store, mode). - Получайте хранилище с помощью
tx.objectStore(name). addдобавляет,getчитает,putдобавляет или обновляет, аdeleteудаляет данные.- Результаты каждой операции запроса доступны в обработчике
onsuccess. tx.oncompleteподтверждает сохранение изменений.
Далее — индексы и запросы.
Часто задаваемые вопросы
Урок «Транзакции и CRUD» бесплатный?
Да — полный текст урока «Транзакции и CRUD» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Транзакции и CRUD»?
Добавляйте, читайте, обновляйте и удаляйте записи. Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Транзакции и CRUD»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Открытие базы данных
- Транзакции и CRUD
- Индексы и запросы
- Версионирование и обновления