0Pricing
JavaScript Academy · Урок

Транзакции и 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 — локальная установка не требуется.

Все уроки этого курса

  1. Открытие базы данных
  2. Транзакции и CRUD
  3. Индексы и запросы
  4. Версионирование и обновления
← Назад к JavaScript Academy