Технология IDB.

  IDB - индексированные базы данных, которые можно создавать и использовать на клиентском устройстве.

  В отличие от локального хранилища, браузер выполняет все операции с базой данных IDB асинхронно, то есть параллельно с интерпретацией HTML-кода.
  Поэтому в индексированной базе данных IDB можно хранить и обрабатывать значительные объемы структурированных данных.
  Кроме того, в индексированной базе данных IDB, индексами могут быть не только строковые значения.

  Из за асинхронности работы с индексированной базой данных IDB реализация интерфейсов с ней усложнена, и, поэтому, код скрипта получается довольно громоздкий.

  В отличии от баз данных SQL, в индексированных базах данных IDB данные структурируются не таблицами, а объектами.
  Аналогом таблицы является, так называемое хранилище объектов, которое имеет, своё уникальное в пределах базы данных имя.
  Можно представить себе хранилище объектов как набор экземпляров одного объекта, каждый из которых является аналогом одной записи в таблице базы данных SQL, название свойства - аналогом названия реквизита записи (название столбца таблицы), а значение свойства - аналогом значения реквизита записи (значение ячейки соответствующего столбца таблицы).

  Кроме свойств назначенных разработчиком, каждый экземпляр объекта (каждая запись таблицы) имеет ещё два служебных свойства (реквизита).
  Одно из них называется путь-ключ или первичный ключ, и должно всегда иметь уникальное значение в пределах своего хранилища (таблицы).
  Второе служебное свойство содержит логическое значение, позволяющее браузеру поддерживать значение первичного ключа автоматически.

  Кроме первичного ключа, ключом (или индексом) разработчик может дополнительно назначить любое свойство (реквизит) объекта этого хранилища.
  Отличие индекса от первичного ключа в том, что значения индекса, по умолчанию, не поддерживаются уникальными автоматически, и могут не быть таковыми.

  Не важно как физически расположены экземпляры объекта ("записи") в хранилище объектов, в базе данных они доступны отсортированными в соответствии с их текущим активным индексом (текущим активным индексом может быть и первичный ключ).
  Логика предыдущего абзаца приведена для лучшего понимания идеологии индексированных баз данных IDB однако, в одном хранилище объектов могут храниться экземпляры разных объектов.
  То есть структура "таблицы" - хранилища объектов базы данных IDB y может быть плавающей.
  Более того, хранить в этом хранилище можно вообще не структурированные данные.
  Однако такая возможность может быть исключена в новых спецификациях IDB.
  Работа с базой данных IDB, как и с базами данных SQL построена на транзакциях.
  Поскольку база данных IDB располагается на клиентском устройстве и может занимать там значительные объёмы дисковой памяти, то, разработчику надо учитывать возможные действия пользователя клиента.
  К примеру, пользователь может периодически, с помощью каких-либо программ, чистить свои диски.

  Очевидно, что, без ограничений, технологию IDB можно использовать только в локальных сетях, подчинённых единому администрированию.
  Базы данных IDB доступны для всех документов одного домена, загруженных на это клиентское устройство.
  Вообще говоря, скрестить браузер с СУБД это мысль довольно оригинальная. Ведь с такой базой данных на клиентском устройстве можно работать и без подключения к сети. А HTML, CSS и JavaScript дают широкие возможности для создания пользовательских интерфейсов.
  Для создания и(или) организации доступа к базе данных IDB предназначен интерфейс IDBFactory.
  С помощью этого интерфейса можно создать новую базу данных IDB, открыть уже имеющуюся базу данных IDB, изменить структуру (версию) уже имеющейся базы данных IDB, или удалить уже имеющуюся базу данных IDB.

  В результате запросов интерфейса IDBFactory на создание, открытие, изменение или удаление базы данных IDB можно получить интерфейс IDBOpenDBRequest, который позволяет зарегистрировать функции обработчики для всех событий связанных с этими запросами.
  Результатом - успешного выполнения запросов на создание, открытие или изменение базы данных IDB будет интерфейс IDBDatabase.
  С помощью интерфейса IDBDatabase можно создать и(или) удалить хранилище объектов, получить интерфейс для создания индекса в хранилище объектов и закрыть базу данных.
  Через интерфейс IDBDatabase также создаются все транзакции в базе данных, тем самым организуется доступ к обработке, хранящейся в базе данных информации.
  Транзакция создается получением соответствующего интерфейса IDBTransaction.
  Интерфейс IDBTransaction даёт доступ к любому хранилищу объектов, участвующему в этой транзакции, ссылаясь на соответствующие интерфейсы IDBObjectStore. кроме того, с помощью интерфейса IDBTransaction можно организовать обработку событий связанных с ходом выполнения этой транзакции.

  С помощью интерфейса IDBObjectStore выполняется вся обработка информации в хранилище объектов, в рамках соответствующей транзакции, с доступом по первичному ключу.
  Кроме того, интерфейс IDBObjectStore позволяет создать или удалить индекс в хранилище объектов, а, также подключить созданный индекс для текущей обработки, получив соответствующий интерфейс IDBIndex.
  С помощью интерфейса IDBIndex выполняется вся обработка информации в хранилище объектов, в рамках соответствующей транзакции, с доступом по соответствующему индексу.
  Важным понятием в технологии IDB является так называемый запрос, функционал которого реализован интерфейсом IDBRequest.
  Почти все операции в IDB выполняются через соответствующие запросы на асинхронное выполнение, а не напрямую.
  Интерфейс IDBRequest позволяет отслеживать ход такого асинхронного выполнения и получать доступ к его результату.
  IDBFactory
  IDBFactory - Является интерфейсом для создания и(или) организации доступа к базе данных IDB.
  С помощью интерфейса IDBFactory можно создать новую базу данных IDB, открыть уже имеющуюся базу данных IDB, изменить структуру (версию) уже имеющейся базы данных IDB, или удалить уже имеющуюся базу данных IDB.
  Экземпляр доступен:

  1. Через свойство indexedDB объекта Window
  2. Через свойство indexedDB объекта Self
  IDBFactory методы.
  cmp - Сравнивает два значения как первичные ключи базы данных.
  Возвращает в числовом формате одно из значений:
  • -1 - Значение первого ключа меньше чем значение второго.
  • 0 - Значение первого и второго ключей идентичны.
  • 1 - Значение первого ключа больше чем значение второго.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBFactory.cmp(Значение1, Значение2])

Значения формата записи:

  deleteDatabase - Создает запрос на удаление базы данных.
  Возвращает ссылку на экземпляр объекта IDBOpenDBRequest для этого запроса.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBFactory.deleteDatabase(Имя)

Значения формата записи:

  open - Создает запрос на создание и(или) подключение к базе данных.
  Возвращает ссылку на экземпляр объекта IDBOpenDBRequest для этого запроса.
  Скрипт может открывать или создавать несколько баз данных, и с одной базой данных может одновременно работать несколько скриптов.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBFactory.open(Имя[, Версия])

Значения формата записи:

  • Экземпляр объекта IDBFactory - Любой операнд значения со значением экземпляра объекта IDBFactory.
  • . - Оператор доступа к методу объекта.
  • open - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Имя - Имя базы данных заданное в любом строковом формате.
      Если база данных с заданным именем существует, и её версия совпадает с запрошенной, то, в случае успешного подключения возникнет событие success, а в свойстве result будет находиться ссылка на соответствующий экземпляр объекта IDBDatabase.
      Если база данных с этим именем не существует, то метод open запросит её создание, то есть возникнет событие upgradeneeded, после обработки которого, также возникнет событие success, и в свойство result будет находиться ссылка на экземпляр объекта IDBDatabase для базы данных, которая вновь создана кодом обработчика события upgradeneeded.
      Во вновь создаваемой базе данных необходимо создать хранилища объектов соответствующими запросами createObjectStore в коде функции обработчика события upgradeneeded.
  • , - Оператор группировки. Ключевое слово в этом формате.
  • Версия - Версия базы данных - целое число, заданное в любом числовом формате.
      Увеличение значения версии по сравнению со значением версии существующей базы данных приведёт к возникновению события upgradeneeded, что позволяет в коде функции обработчика этого события провести изменение структуры (версии) базы данных соответствующими запросами createObjectStore и deleteObjectStore.
      После обработки события upgradeneeded возникнет событие success, и в свойство result будет находиться ссылка на экземпляр объекта IDBDatabase для базы данных, которая изменена кодом обработчика события upgradeneeded.
      Если значение запрошенной версии совпадет с версией открываемой базы данных, то событие success возникнет сразу, и в свойство result будет находиться ссылка на экземпляр объекта IDBDatabase для этой базы данных.
      По умолчанию версия = 1.
  • ) - Оператор группировки. Ключевое слово в этом формате.

  IDBOpenDBRequest
  IDBOpenDBRequest - Является интерфейсом к запросу, для открытия или удаления базы данных IDB.
  Наследует свойства и методы объекта IDBRequest. Имеет два своих собственных свойства.
 Экземпляр доступен:

  1. С помощью метода deleteDatabase объекта IDBFactory
  2. С помощью метода open объекта IDBFactory
  IDBOpenDBRequest свойства.
  onblocked - Содержит функцию, которая должна быть вызвана, если сделана попытка доступа к заблокированной базе данных.
  База данных, в частности, может быть заблокирована выполнением функции, связанной с событием upgradeneeded из документов из другого окна или вкладки браузера.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBOpenDBRequest.onblocked[ = Функция]

Значения формата записи:

  onupgradeneeded - Содержит функцию, которая должна быть вызвана, если метод open потребовал создание новой базы данных, или изменения структуры существующей базы данных.
  Только в коде этой функции могут быть созданы или удалены хранилища объектов этой базы данных.
  Ссылка на соответствующий экземпляр объекта IDBDatabase будет находиться в значении свойства result этого экземпляра объекта IDBOpenDBRequest.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBOpenDBRequest.onupgradeneeded[ = Функция]

Значения формата записи:

  IDBDatabase
  IDBDatabase - Является интерфейсом к открытой базе данных IDB.
  Все операции с базой данных IDB начинаются с того как запрос open объекта IDBFactory вернет экземпляр объекта IDBOpenDBRequest, свойство result которого, после успешного выполнения этого запроса, будет содержать экземпляр объекта IDBDatabase.
  Экземпляр доступен:

  1. Через свойство result объекта IDBRequest
  2. Через свойство db объекта IDBTransaction
  IDBDatabase свойства.
  name - Содержит имя открытой базы данных.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.name

Значения формата записи:

  objectStoreNames - Содержит список - имён хранилищ объектов открытой базы данных.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.objectStoreNames

Значения формата записи:

  onabort - Содержит функцию, которая должна быть вызвана, если попытка доступа к открытой базе данных будет прервана.
  Это событие может наступить только при работе методов createObjectStore, close, deleteObjectStore или transaction.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.onabort[ = Функция]

Значения формата записи:

  onerror - Содержит функцию, которая должна быть вызвана, если возникла ошибка доступа к открытой базе данных.
  Это событие может наступить только при работе методов createObjectStore, close, deleteObjectStore или transaction.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.onerror[ = Функция]

Значения формата записи:

  onversionchange - Содержит функцию, которая должна быть вызвана, если в другом окне или вкладке, для этой бызы данных произошло событие upgradeneeded или вызван метод deleteDatabase.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.onversionchange[ = Функция]

Значения формата записи:

  version - Содержит версию открытой базы данных.
  Значение имеет числовой формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.version

Значения формата записи:

  IDBDatabase методы.
  addEventListener - Устанавливает функцию обработчик событий.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.addEventListener(Событие, Функция, false)

Значения формата записи:

  close - Инициирует закрытие этой базы данных.
  Возвращает значение undefined.
  База данных закрывается только тогда, когда все запросы, созданные в этом подключении, завершатся.   Создание новых запросов, после вызова метода close невозможно, и приведет к соответствующим событиям и ошибкам времени выполнения в этих запросах.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.close()

Значения формата записи:

  createObjectStore - Создаёт хранилище объектов в этой базе данных.
  Возвращает ссылку на соответствующий экземпляр объекта IDBObjectStore.
  Метод createObjectStore создаёт хранилище объектов, не обращаясь к запросу.
  Метод createObjectStore можно вызывать только в коде функции обработчике события upgradeneeded, вызов метода createObjectStore в обработчике события success приведет к событию error.
  Возвращаемый методом createObjectStore экземпляр объекта IDBObjectStore имеет функционал, который ограничивается только созданием индексов.
  Запросы других операций в хранилище объектов, инициированные из этого экземпляра объекта IDBObjectStore, приведут к ошибке времени выполнения.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.createObjectStore(Имя, {keyPath: Ключ[, autoIncrement: Флаг]})

Значения формата записи:

  Конструкция

      {keyPath: Ключ[, autoIncrement: Флаг]}


  - это, в принципе, запись экземпляра объекта с двумя свойствами.
  То есть её можно заменить любым другим операндом со значением этого экземпляра объекта.
  deleteObjectStore - Удаляет хранилище объектов в этой базе данных.
  Возвращает значение undefined.
  Метод createObjectStore создаёт хранилище объектов, не обращаясь к запросу.
  Метод createObjectStore можно вызывать только в коде функции обработчике события upgradeneeded, вызов метода deleteObjectStore в обработчике события success приведет к событию error.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.deleteObjectStore(Имя)

Значения формата записи:

  dispatchEvent - Инициализирует возникновение заданного события.
  Возвращает значение undefined.
  Инициализированное событие не происходит на самом деле, но инициализация приводит к вызову его обработчика.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.dispatchEvent(Событие)

Значения формата записи:

  removeEventListener - Отменяет функцию обработчик событий, установленную методом addEventListener.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.removeEventListener(Событие, Функция, false)

Значения формата записи:

  transaction - Создает транзакцию в этой базе данных.
  Возвращает ссылку на соответствующий экземпляр объекта IDBTransaction.
  Метод transaction создает транзакцию, не обращаясь к запросу.
  Метод transaction можно вызывать только в коде функции обработчике события success, вызов метода transaction в обработчике события upgradeneeded приведет к событию error.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBDatabase.transaction(Имена хранилищ[, Тип])

Значения формата записи:

  IDBTransaction
  IDBTransaction - Является интерфейсом к транзакции в базах данных IDB.
  Транзакция - это стандартный механизм любой системы управления базами данных.

  При операциях обновления данных в таблицах базы данных, почти всегда есть потребность объединить несколько таких операций в одном логическом блоке.
  Такой блок должен быть выполнен либо как единое целое, либо вообще не выполнен.
  Этот логический блок и называется транзакцией.

  В базах данных IDB механизм транзакций реализован в виде объекта IDBTransaction.
  Только через экземпляр объекта IDBTransaction можно получить любой экземпляр объекта IDBObjectStore, который и позволяет реализовать все операции с данными в базе данных IDB.
  То есть все операции обработки данных доступные через интерфейс IDBObjectStore входят в логический блок, объединённый экземпляром объекта IDBTransaction.
  Ошибка, или незавершение транзакции, поддерживаемой экземпляром объекта IDBTransaction, приводит к аннулированию всех, даже выполненных, операций обработки данных запрошенных любым экземпляром объекта IDBObjectStore, "порожденным" соответствующим экземпляром объекта IDBTransaction.
  Кроме того, с помощью обработчиков событий экземпляра объекта IDBTransaction, можно избежать обработки событий отдельных запросов всех "порождённых" им экземпляров объекта IDBObjectStore, то есть существенно сократить код скрипта.
  В технологии IDB нет явного механизма, который может использовать разработчик для указания окончания транзакции.
  Предполагается, что таким указанием для браузера является завершение всех запросов текущей транзакции в коде скрипта.
  Это необходимо иметь ввиду, чтобы не "наплодить" в коде логически не связанных запросов из экземпляров объекта IDBObjectStore, полученных в текущей транзакции.
  Так же надо иметь в виду, что браузер может самостоятельно прервать слишком большую и(или) затянувшуюся транзакцию.
  Можно запустить сразу несколько транзакций (создав несколько экземпляров объекта IDBTransaction), причём для одного и того же хранилища объектов. И, хотя запросы всех запущенных транзакций в коде скрипта могут следовать вперемешку, запросы запущенной позже транзакции всегда дождутся окончания или отмены всех предыдущих транзакций.
  Экземпляр доступен:

  1. С помощью метода transaction объекта IDBDatabase
  2. Через свойство transaction объекта IDBRequest
  IDBTransaction свойства.
  error - В случае неудачной транзакции содержит ссылку на экземпляр объекта Error.
  Если транзакция закончена успешно, еще незавершена, или прервана, то свойство error содержит значение null.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.error

Значения формата записи:

  db - Содержит ссылку на соответствующий экземпляр объекта IDBDatabase.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.db

Значения формата записи:

  mode - Содержит тип транзакции.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.mode

Значения формата записи:

  objectStoreNames - Содержит список - имен хранилищ объектов, на которые распространяется эта транзакция.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.objectStoreNames

Значения формата записи:

  onabort - Содержит функцию, которая должна быть вызвана, если эта транзакции была прервана (отменена) собственным методом abort.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.onabort[ = Функция]

Значения формата записи:

  oncomplete - Содержит функцию, которая должна быть вызвана, если эта транзакция успешно завершилась.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.oncomplete[ = Функция]

Значения формата записи:

  onerror - Содержит функцию, которая должна быть вызвана, если, при обработке транзакции, произошла ошибка.
  Это событие может возникнуть только при работе метода objectStore.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.onerror[ = Функция]

Значения формата записи:

  IDBTransaction методы.
  abort - Прерывает (отменяет) эту транзакцию.
  Возвращает значение undefined.
  Все запросы, выполненные или выполняемые в рамках этой транзакции, получат в свойстве error ссылку на экземпляр объекта Error.
  Результаты всех, уже успешно завершившихся запросов в рамках этой транзакции, будут аннулированы.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.abort()

Значения формата записи:

  addEventListener - Устанавливает функцию обработчик событий для этой транзакции.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.addEventListener(Событие, Функция, false)

Значения формата записи:

  dispatchEvent - Инициализирует возникновение заданного события в этой транзакции.
  Возвращает значение undefined.
  Инициализированное событие не происходит на самом деле, но инициализация приводит к вызову его обработчика.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.dispatchEvent(Событие)

Значения формата записи:

  removeEventListener - Отменяет функцию обработчик событий, установленную методом addEventListener, для этого запроса.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.removeEventListener(Событие, Функция, false)

Значения формата записи:

  objectStore - Возвращает ссылку на экземпляр объекта IDBObjectStore - хранилища объектов с заданным именем.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBTransaction.objectStore(Имя)

Значения формата записи:

  IDBObjectStore
  IDBObjectStore - Является интерфейсом к хранилищу объектов в базе данных IDB.
  Интерфейс к хранилищу объектов реализует все запросы к этому хранилищу.
  Экземпляр объекта IDBObjectStore становится доступным в двух случаях.
  1. При создании базы данных (или изменении её структуры) можно создать хранилище объектов.
  2. Из транзакции можно обратиться к интерфейсу IDBObjectStore.
  В первом случае интерфейс IDBObjectStore может только создавать или удалять индексы в хранилище объектов.
  Во втором случае интерфейс IDBObjectStore может создавать запросы на операции с данными хранилища объектов.
  Поскольку все операции с базами данных IDBFactory выполняются браузером асинхронно по отношению к интерпретации HTML-кода, то для доступа к результатам этих операций (запросов) используется стандартный для JavaScript механизм событий.
  Такой механизм реализует интерфейс IDBRequest. Поэтому большинство запросов к хранилищу объектов IDB возвращают всегда экземпляр объекта IDBRequest.
  Экземпляр доступен:

  1. С помощью метода createObjectStore объекта IDBDatabase
  2. С помощью метода objectStore объекта IDBTransaction
  3. Через свойство objectStore объекта IDBIndex
  IDBObjectStore свойства.
  autoIncrement - Содержит Флаг автогенератора значений первичного ключа этого хранилища объектов.
  Значение имеет логический формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.autoIncrement

Значения формата записи:

  indexNames - Содержит ссылку на список - имён индексов этого хранилища объектов.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.indexNames

Значения формата записи:

  keyPath - Содержит первичный ключ этого хранилища объектов.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.keyPath

Значения формата записи:

  name - Содержит имя этого хранилища объектов.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.name

Значения формата записи:

  transaction - Содержит ссылку на экземпляр объекта IDBTransaction - транзакции, в которой получен этот экземпляр объекта IDBObjectStore.
  Если этот экземпляр объекта IDBObjectStore получен методом createObjectStore объекта IDBDatabase, то свойство transaction содержит значение null.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.transaction

Значения формата записи:

  IDBObjectStore методы.
  add - Создает запрос на добавление новой "записи" в хранилище объектов с заданным первичным ключом и значением.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод add можно вызывать только "внутри" транзакции созданной с типом readwrite.
  Вызов метода add в коде функции обработчике события upgradeneeded, или "внутри" транзакции созданной с типом readonly, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение.
  Если запрос выполнится успешно, то в свойстве result соответствующего экземпляра объекта IDBRequest будет находиться добавленное значение.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.add(Значение)

Значения формата записи:

  clear - Создает запрос на удаление всех "записей" в этом хранилище объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод clear можно вызывать только "внутри" транзакции, вызов метода clear в коде функции обработчике события upgradeneeded, приведет к событию error.
  Обработчик события complete должен проверить успешность выполнения этого запроса.
  Метод clear удаляет хранилища не только "записи" с данными, но и таблицы индексов.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.clear()

Значения формата записи:

  count - Создает запрос на подсчёт всех "записей" в заданном диапазоне значений первичного ключа из хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод count можно вызывать только "внутри" транзакции, вызов метода count в коде функции обработчике события upgradeneeded, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение и получить искомое количество "записей" в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.count([Диапазон])

Значения формата записи:

  createIndex - Создает индекс в этом хранилище объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBIndex.
  Метод createIndex можно вызывать только в коде функции обработчике события upgradeneeded, вызов метода createIndex "внутри" транзакции приведет к событию error.
  Можно создавать много индексов в хранилище объектов, однако надо понимать, что каждый индекс - это служебная таблица индексированной базы данных, которая занимает соответствующий объем дискового пространства.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.createIndex(Индекс, Реквизит[, Флаг])

Значения формата записи:

  • Экземпляр объекта IDBObjectStore - Любой операнд значения, со значением экземпляра объекта IDBObjectStore.
  • . - Оператор доступа к методу объекта.
  • createIndex - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Индекс - Имя индекса заданное в любом строковом формате.
      Имя индекса не должно совпадать с именем другого индекса.
  • Реквизит - Имя свойства (реквизита) экземпляров объекта ("записей") в хранилище объектов, которое будет индексом этих "записей".
      То есть значения этого свойства будут значениями индекса.
      Может быть указано и имя первичного ключа.
      Поскольку экземпляры объекта ("записи") в хранилище объектов могут иметь разную структуру, то экземпляр объекта ("запись"), не имеющий свойства с заданным именем, не будет заметен в этом индексе.
  • Флаг - Флаг индекса заданный как экземпляр объекта IDBIndexParameters.
      Экземпляр объекта IDBIndexParameters содержит три свойства:
    • unique - Значение true означает, что значения индекса в каждой "записи" должны быть уникальны. (По умолчанию - false.)
    • multiEntry - Значение true означает, что если индексом назначен первичный ключ, и он является массивом, то в таблицу индексов будет добавлена "запись" для каждого элемента этого массива. (По умолчанию - false.)
    • locale - Указывает, как сортировать "записи" по этому индексу в хранилище объектов.
      • auto - Локальная интерпретация значения индекса.
      • null - Обычная JavaScript сортировка.
      • Образец - Код конкретного языкового стандарта.
      (По умолчанию - null.)
  • , - Оператор группировки. Ключевое слово в этом формате.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  delete - Создает запрос на удаление "записи" с заданным значением первичного ключа из этого хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод delete можно вызывать только "внутри" транзакции, вызов метода delete в коде функции обработчике события upgradeneeded, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение.
  Если запрос выполнится успешно, то в свойстве result соответствующего экземпляра объекта IDBRequest будет находиться значение удалённой "записи".

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.delete(Ключ)

Значения формата записи:

  deleteIndex - Удаляет индекс в этом хранилище объектов.
  Возвращает значение undefined.
  Метод deleteIndex можно вызывать только в коде функции обработчике события upgradeneeded, вызов метода deleteIndex "внутри" транзакции приведет к событию error.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.deleteIndex(Индекс)

Значения формата записи:

  get - Создает запрос на чтение одной "записи" с заданным значением первичного ключа из хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод get можно вызывать только "внутри" транзакции, вызов метода get в коде функции обработчике события upgradeneeded, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение и получить значение прочитанной" записи" в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.get(Ключ)

Значения формата записи:

  index - Открывает в этом хранилище объектов один из созданных индексов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBIndex.
  Метод index можно вызывать только внутри" транзакции, вызов метода index в коде функции обработчике события upgradeneeded, приведет к событию error.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.index(Индекс)

Значения формата записи:

  openCursor - Создает запрос на получение экземпляра объекта IDBCursorWithValue для заданного диапазона значений первичного ключа из этого хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод openCursor можно вызывать только "внутри" транзакции, вызов метода openCursor в коде функции обработчике события upgradeneeded, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение, и получить ссылку на искомый экземпляр объекта IDBCursorWithValue в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.openCursor([Диапазон|Ключ])

Значения формата записи:

  • Экземпляр объекта IDBObjectStore - Любой операнд значения, со значением экземпляра объекта IDBObjectStore.
  • . - Оператор доступа к методу объекта.
  • openCursor - Ключевое слово.
  • ( - Оператор группировки. Ключевое слово в этом формате.
  • Диапазон - Диапазон значений первичного ключа заданный экземпляром объекта IDBKeyRange.
      Если диапазон или ключ не задан, то в диапазон курсора попадут все "записи" этого хранилища объектов.
  • Ключ - Значение первичного ключа заданное в любом допустимом формате.
      В случае если задано одно значение первичного ключа, что метод openCursor будет работать как метод get за исключением того, что не получит "записи" со значением - undefined, при наличии таковой в хранилище.
      Если диапазон или ключ не задан, то в диапазон курсора попадут все "записи" этого хранилища объектов.
  • ) - Оператор группировки. Ключевое слово в этом формате.
  openKeyCursor - Создает запрос на получение экземпляра объекта IDBCursor для заданного диапазона значений первичного ключа из хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод openKeyCursor можно вызывать только "внутри" транзакции, вызов метода openKeyCursor в коде функции обработчике события upgradeneeded, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение, и получить ссылку на искомый экземпляр объекта IDBCursor в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.openKeyCursor([Диапазон])

Значения формата записи:

  put - Создает запрос на добавление новой "записи" или замену существующей в хранилище объектов, с заданным первичным ключом и значением.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод put можно вызывать только "внутри" транзакции созданной с типом readwrite. Вызов метода put в коде функции обработчике события upgradeneeded, или "внутри" транзакции созданной с типом readonly, приведет к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение.
  Если запрос выполнится успешно, то в свойстве result соответствующего экземпляра объекта IDBRequest будет находиться заданное значение.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBObjectStore.put(Значение)

Значения формата записи:

  IDBIndex
  IDBIndex - Является интерфейсом к индексу в хранилище объектов базы данных IDB.
  Индексирование таблиц - это стандартная операция для систем управления базами данных, которые, кроме таблиц с данными, создают и поддерживают также и таблицы с индексами.
  В технологии IDB индекс это аналог хранилища объектов, в котором хранятся и поддерживаются, так называемые, ссылочные объекты для этого хранилища.
  Для одного хранилища объектов может быть создано несколько хранилищ ссылочных объектов.

  Интерфейс IDBIndex, аналогично интерфейсу IDBObjectStore, может создавать запросы для операций с данными его хранилища объектов, однако, вместо первичного ключа, в этих запросах используется индекс.

  Соответствие между хранилищем объектов и его хранилищами ссылочных объектов поддерживается в технологии IDB автоматически.
  Каждой "записи" в хранилище ссылочных объектов соответствует одна или несколько "записей" в соответствующем хранилище объектов.
  Экземпляр доступен:

  1. С помощью метода createIndex объекта IDBObjectStore
  2. С помощью метода index объекта IDBObjectStore
  IDBIndex свойства.
  isAutoLocale - Содержит значение true, если, при создании этого индекса, свойству его флага locale было задано значение auto.
  Значение имеет логический формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.isAutoLocale

Значения формата записи:

  keyPath - Содержит имя первичного ключа хранилища объектов, с которым связан этот индекс.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.keyPath

Значения формата записи:

  locale - Содержит значение свойства флага этого индекса locale, если в этом свойстве, при создании этого индекса, был задан образец локализации.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.locale

Значения формата записи:

  multiEntry - Содержит значение свойства флага этого индекса multiEntry, которое оно получило при создании индекса.
  Значение имеет логический формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.multiEntry

Значения формата записи:

  name - Содержит имя этого индекса.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.name

Значения формата записи:

  objectStore - Содержит ссылку на экземпляр объекта IDBObjectStore - хранилища объектов, с которым связан этот индекс.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.objectStore

Значения формата записи:

  unique - Содержит значение свойства флага этого индекса unique, которое оно получило при создании индекса.
  Значение имеет логический формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.unique

Значения формата записи:

  IDBIndex методы.
  count - Создает запрос на подсчёт всех "записей" из связанного хранилища объектов в заданном диапазоне значений индекса.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод count можно вызывать, только если этот экземпляр объекта IDBIndex получен с помощью метода index объекта IDBObjectStore, в других случаях это приведёт к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение и получить искомое количество "записей" в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.count([Диапазон])

Значения формата записи:

  get - Создает запрос на чтение одной "записи" из связанного хранилища объектов с заданным значением индекса.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод get можно вызывать, только если этот экземпляр объекта IDBIndex получен с помощью метода index объекта IDBObjectStore, в других случаях это приведёт к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение и получить значение прочитанной "записи" в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.get(Индекс)

Значения формата записи:

  openCursor - Создает запрос на получение экземпляра объекта IDBCursorWithValue из связаного хранилища объектов для заданного диапазона значений индекса.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод openCursor можно вызывать, только если этот экземпляр объекта IDBIndex получен с помощью метода index объекта IDBObjectStore, в других случаях это приведёт к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение, и получить ссылку на искомый экземпляр объекта IDBCursorWithValue в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.openCursor([Диапазон|Индекс])

Значения формата записи:

  openKeyCursor - Создает запрос на получение экземпляра объекта IDBCursor из связаного хранилища объектов для заданного диапазона значений индекса.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Метод openKeyCursor можно вызывать, только если этот экземпляр объекта IDBIndex получен с помощью метода index объекта IDBObjectStore, в других случаях это приведёт к событию error.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение, и получить ссылку на искомый экземпляр объекта IDBCursor в свойстве result.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBIndex.openKeyCursor([Диапазон|Индекс])

Значения формата записи:

  IDBCursor | IDBCursorWithValue
  IDBCursor | IDBCursorWithValue - Является интерфейсом к запрошенному диапазону "записей" (экземпляров объектов) из хранилища объектов базы данных IDB.
  В технологии IDB существуют операции для прямого чтения "записей" из базы данных. Например метод get и его аналог для группового чтения getAll.
  Однако прямое чтение группы "записей" в память, помимо того, что может потребовать больших объёмов этой памяти, требует от разработчика ещё и написания какого-то дополнительного кода для обработки этой группы "записей".

  Интерфейс IDBCursor позволяет обойти эти проблемы (метод getAll не описан в этом справочнике, поскольку, скорее всего, рано или поздно отомрёт).
  Интерфейс IDBCursor связывает запрошенный диапазон "записей" (экземпляров объектов) из хранилища объектов с виртуальным курсором, без выборки этих записей в память.
  "Запись", на которой находится этот курсор в текущий момент, доступна скрипту через свойства интерфейса IDBCursor | IDBCursorWithValue, а методы интерфейса IDBCursor | IDBCursorWithValue позволяют перемещать этот курсор по всему связанному с этим интерфейсом диапазону.
  Объект IDBCursorWithValue является объектом IDBCursor дополненным одним свойством - value.
  В общем случае инкапсулятор IDBCursor предназначен для уменьшения времени перемещения по диапазону, с которым он связан, поскольку обходится без чтения значений "записей" при таких перемещениях.
  Нет ограничений на одновременное создание и использование нескольких интерфейсов IDBCursor.
  Экземпляр объекта IDBCursorWithValue доступен:

  1. С помощью метода openCursor объекта IDBObjectStore
  2. С помощью метода openKeyCursor объекта IDBObjectStore
  3. С помощью метода openCursor объекта IDBIndex
  4. С помощью метода openKeyCursor объекта IDBIndex
  Экземпляр объекта IDBCursor доступен:

  1. С помощью метода openKeyCursor объекта IDBObjectStore
  2. С помощью метода openKeyCursor объекта Index
  IDBCursor | IDBCursorWithValue свойства.
  direction - Содержит значение, указывающее направление последнего перемещения курсора.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.direction
  • Экземпляр объекта IDBCursorWithValue.direction

Значения формата записи:

  • Экземпляр объекта IDBCursor - Любой операнд значения со значением экземпляра объекта IDBCursor.
  • Экземпляр объекта IDBCursorWithValue - Любой операнд значения со значением экземпляра объекта IDBCursorWithValue.
  • . - Оператор доступа к свойству объекта.
  • direction - Ключевое слово. Ссылается на одно из значений:
    • next - Направление от начала диапазона.
    • nextunique - Направление от начала диапазона. Если индексом является массив, то курсор переместился только на "запись" со значением равным значению первого элемента массива.
    • prev - Направление от конца диапазона.
    • prevunique - Направление от конца диапазона. Если индексом является массив, то курсор переместился только на "запись" со значением равным значению первого элемента массива.
  key - Содержит значение индекса "записи" связанного диапазона, на которой находится курсор.
  Значение может иметь любой допустимый формат JavaScript.
  В случае если этот экземпляр объекта IDBCursor получен из экземпляра объекта IDBObjectStore, то значение совпадает со значением свойства primaryKey.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.key
  • Экземпляр объекта IDBCursorWithValue.key

Значения формата записи:

  primaryKey - Содержит значение первичного ключа "записи" связанного диапазона, на которой находится курсор.
  Значение может иметь любой допустимый формат JavaScript.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.primaryKey
  • Экземпляр объекта IDBCursorWithValue.primaryKey

Значения формата записи:

  source - Содержит ссылку на экземпляр объекта IDBObjectStore или экземпляр объекта IDBIndex - источник этого экземпляра объекта IDBCursor.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.source
  • Экземпляр объекта IDBCursorWithValue.source

Значения формата записи:

  value - Содержит значение "записи" связанного диапазона, на которой находится курсор.
  Значение может иметь любой допустимый формат JavaScript (как правило, экземпляр объекта).

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursorWithValue.value

Значения формата записи:

  IDBCursor | IDBCursorWithValue методы.
  advance - Перемещает курсор на заданное количество "записей" в связанном диапазоне от текущей "записи" в направлении к концу связанного диапазона.
  Возвращает значение undefined.
  Метод advance не создаёт свой запрос, однако, в случае успешного выполнения метода advance, возникнет событие success на запросе, которым был получен этот экземпляр объекта IDBCursor (методы openCursor объекта IDBObjectStore, openKeyCursor объекта IDBObjectStore, openCursor объекта IDBIndex и openKeyCursor объекта IDBIndex).
  При неуспешном выполнении метода advance (например при выходе за пределы диапазона) события success не возникает, но не возникает и события error.
  Свойство result означенного запроса будет содержать этот экземпляр объекта IDBCursor в состоянии, к которому его приведёт вызов метода advance (direction, key, primaryKey, value), то есть получить результат работы метода advance корректно можно только в обработчике этого события.
  Следовательно, перед вызовом метода advance лучше переназначить обработчики событий на этом запросе.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.advance(Количество)
  • Экземпляр объекта IDBCursorWithValue.advance(Количество)

Значения формата записи:

  continue - Перемещает курсор от текущей "записи" на следующую "запись" в связанном диапазоне, заданную значением первичного ключа или индекса.
  Возвращает значение undefined.
  Метод continue не создаёт свой запрос, однако, в случае успешного выполнения метода continue, возникнет событие success на запросе, которым был получен этот экземпляр объекта IDBCursor (методы openCursor объекта IDBObjectStore, openKeyCursor объекта IDBObjectStore, openCursor объекта IDBIndex и openKeyCursor объекта IDBIndex).
  При неуспешном выполнении метода continue (например при выходе за пределы диапазона) события success не возникает, но не возникает и события error.
  Свойство result означенного запроса будет содержать этот экземпляр объекта IDBCursor в состоянии, к которому его приведёт вызов метода continue (direction, key, primaryKey, value), то есть получить результат работы метода continue корректно можно только в обработчике этого события.
  Следовательно, перед вызовом метода continue лучше переназначить обработчики событий на на этом запросе. Однако если обработчик события success не переназначать, то можно довольно оригинально организовать перебор диапазона (пример).

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.continue([Ключ])
  • Экземпляр объекта IDBCursorWithValue.continue([Ключ])

Значения формата записи:

  delete - Создает запрос на удаление "записи", на которой остановился курсор, из хранилища объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение.
  Если запрос выполнится успешно, то в свойстве result экземпляра объекта IDBRequest будет находиться удаленное значение.
  При этом курсор никуда не перемещается, а свойства key, primaryKey, и value получают значение null.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.delete()
  • Экземпляр объекта IDBCursorWithValue.delete()

Значения формата записи:

  update - Создает запрос на замещение "записи", на которой остановился курсор, в хранилище объектов.
  Возвращает ссылку на соответствующий экземпляр объекта IDBRequest.
  Один из обработчиков событий success или complete должен проверить успешность постановки этого запроса в очередь или его успешное выполнение.
  Если запрос выполнится успешно, то в свойстве result экземпляра объекта IDBRequest будет находиться заданное значение.
  При этом если курсор находится в позиции только что удалённой "записи", то она замещается.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBCursor.update(Значение)
  • Экземпляр объекта IDBCursorWithValue.update(Значение)

Значения формата записи:

  IDBRequest
  IDBRequest - Является интерфейсом к асинхронному запросу к базе данных IDB.
  Инкапсулирует общие свойства и методы таких запросов.
  Поскольку все операции с базами данных IDB выполняются браузером асинхронно по отношению к интерпретации HTML-кода, то их вызовы, в коде скрипта, где прописаны, только инициируют соответствующий запрос, который и запускает асинхронное выполнение.
  Такой запрос всегда возвращает свой интерфейс - IDBRequest.

  Интерфейс IDBRequest использует стандартный для JavaScript механизм событий для отслеживания выполнения связанного с ним запроса.

  Кроме того интерфейс IDBRequest, в случае успешного выполнения связанного запроса, предоставит доступ к результату этого запроса.
  Экземпляр доступен:

  1. С помощью метода deleteDatabase объекта IDBFactory
  2. С помощью метода open объекта IDBFactory
  3. С помощью метода add объекта IDBObjectStore
  4. С помощью метода clear объекта IDBObjectStore
  5. С помощью метода count объекта IDBObjectStore
  6. С помощью метода delete объекта IDBObjectStore
  7. С помощью метода get объекта IDBObjectStore
  8. С помощью метода openCursor объекта IDBObjectStore
  9. С помощью метода openKeyCursor объекта IDBObjectStore
  10. С помощью метода put объекта IDBObjectStore
  11. С помощью метода count объекта IDBIndex
  12. С помощью метода get объекта IDBIndex
  13. С помощью метода openCursor объекта IDBIndex
  14. С помощью метода openKeyCursor объекта IDBIndex
  15. С помощью метода delete объекта IDBCursor
  16. С помощью метода update объекта IDBCursor
  IDBRequest свойства.
  error - В случае состояния запроса в положении done, содержит ссылку на соответствующий экземпляр объекта Error.
  Если запрос успешен, то содержит значение null.
  Значение этого свойства лучше получать в коде функции связанной с событием error.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.error

Значения формата записи:

  onerror - Содержит функцию, которая должна быть вызвана, если, при обработке запроса, произошла ошибка.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.onerror[ = Функция]

Значения формата записи:

  onsuccess - Содержит функцию, которая должна быть вызвана, если запрос выполнен успешно.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.onsuccess[ = Функция]

Значения формата записи:

  readyState - Содержит состояние запроса.
  Значение имеет строковый формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.readyState

Значения формата записи:

  result - В случае состояния запроса в положении done содержит результат этого запроса.
  Значение этого свойства лучше получать в коде функции, связанной с событием success.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.result

Значения формата записи:

  source - В случае состояния запроса в положении done, содержит ссылку на экземпляр объекта IDBIndex, IDBObjectStore, или IDBCursor - источник этого запроса.
  Если запрос не успешен или запрос не определяет источник, то свойство source содержит значение null.
  Значение этого свойства лучше получать в коде функции, связанной с событием success.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.source

Значения формата записи:

  transaction - В случае состояния запроса в положении done, содержит ссылку на экземпляр объекта IDBTransaction - транзакции, в рамках которой выполнялся этот запрос.
  Если запрос не успешен или запрос не определяет транзакцию, то свойство transaction содержит значение null.
  Значение этого свойства лучше получать в коде функции, связанной с событием success.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.transaction

Значения формата записи:

  IDBRequest методы.
  addEventListener - Устанавливает функцию обработчик событий для запроса.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.addEventListener(Событие, Функция, false)

Значения формата записи:

  dispatchEvent - Инициализирует возникновение заданного события связанного с запросом.
  Возвращает значение undefined.
  Инициализированное событие не происходит на самом деле, но инициализация приводит к вызову его обработчика.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.dispatchEvent(Событие)

Значения формата записи:

  removeEventListener - Отменяет функцию обработчик событий, установленную методом addEventListener, для этого запроса.
  Возвращает значение undefined.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBRequest.removeEventListener(Событие, Функция, false)

Значения формата записи:

  IDBKeyRange
  IDBKeyRange - Является интерфейсом к конструктору диапазона значений ключа или индекса.
  Такой диапазон может быть использован в качестве аргумента в некоторых методах создающих запросы к базе данных.
  Объект IDBKeyRange несколько выбивается из канонов JavaScript.
  Само по себе ключевое слово IDBKeyRange ссылается на некую функцию, которая, не являясь конструктором экземпляров объекта IDBKeyRange, сама, как экземпляр объекта Function, имеет методы, с помощью которых только и можно получить экземпляр объекта IDBKeyRange
  Экземпляр доступен:

  1. С помощью метода bound объекта IDBKeyRange
  2. С помощью метода lowerBound объекта IDBKeyRange
  3. С помощью метода only объекта IDBKeyRange
  4. С помощью метода upperBound объекта IDBKeyRange
  IDBKeyRange свойства.
  lower - Содержит начальное значение диапазона.

Формат записи в коде скрипта:

  • IDBKeyRange.lower

Значения формата записи:

  lowerOpen - Содержит значение true если начальное значение диапазона входит в этот диапазон.

Формат записи в коде скрипта:

  • IDBKeyRange.lowerOpen

Значения формата записи:

  upper - Содержит конечное значение диапазона.

Формат записи в коде скрипта:

  • IDBKeyRange.upper

Значения формата записи:

  upperOpen - Содержит значение true если конечное значение диапазона входит в этот диапазон.

Формат записи в коде скрипта:

  • IDBKeyRange.upperOpen

Значения формата записи:

  IDBKeyRange методы.
  bound - Создает диапазон значений ключа или индекса.
  Возвращает ссылку на соответствующий экземпляр объекта IDBKeyRange.

Формат записи в коде скрипта:

  • IDBKeyRange.bound(Значение1, Значение2 , Граница1 , Граница2)

Значения формата записи:

  includes - Возвращает значение true если заданное значение входит в этот диапазон значений ключа или индекса, и значение false - в противном случае.

Формат записи в коде скрипта:

  • IDBKeyRange.includes(Значение)

Значения формата записи:

  lowerBound - Создает диапазон значений ключа или индекса ограниченный заданным начальным значением.
  Возвращает ссылку на соответствующий экземпляр объекта IDBKeyRange.

Формат записи в коде скрипта:

  • IDBKeyRange.lowerBound(Значение, Граница)

Значения формата записи:

  only - Создает диапазон значений ключа или индекса из единственного заданного значения.
  Возвращает ссылку на соответствующий экземпляр объекта IDBKeyRange.

Формат записи в коде скрипта:

  • IDBKeyRange.only(Значение)

Значения формата записи:

  upperBound - Создает диапазон значений ключа или индекса ограниченный заданным конечным значением.
  Возвращает ссылку на соответствующий экземпляр объекта IDBKeyRange.

Формат записи в коде скрипта:

  • IDBKeyRange.upperBound([Значение][, Граница])

Значения формата записи:

  IDBVersionChangeEvent
  IDBVersionChangeEvent - Является объектом Event передаваемым в событие upgradeneeded.   Дополнен двумя собственными свойствами.
  Экземпляр доступен:

  1. В соответствующем экземпляре объекта Event
  IDBVersionChangeEvent свойства.
  newVersion - Содержит значение новой версии базы данных IDB.
  Значение имеет числовой формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBVersionChangeEvent.newVersion

Значения формата записи:

  oldVersion - Содержит значение старой версии базы данных IDB.
  Значение имеет числовой формат.

Формат записи в коде скрипта:

  • Экземпляр объекта IDBVersionChangeEvent.oldVersion

Значения формата записи:

Сводная таблица событий
Имя Свойство Объект Тип Примечание
abort onabort IDBDatabase События IDB Прерывание доступа к открытой базе данных
abort onabort IDBTransaction События IDB Прерывание транзакции
complete oncomplete IDBTransaction События IDB Успешное завершение транзакции
blocked onblocked IDBOpenDBRequest События IDB Попытка доступа к заблокированной базе данных
error onerror IDBDatabase События IDB Ошибка доступа к открытой базе данных
error onerror IDBTransaction События IDB Ошибка обращения к хранилищу объектов
error onerror IDBRequest События IDB Ошибка запроса к базе данных
success onsuccess IDBRequest События IDB Успешное выполнение запроса к базе данных
upgradeneeded onupgradeneeded IDBOpenDBRequest События IDB Создание новой базы данных, или изменения структуры базы данных
versionchange onversionchange IDBDatabase События IDB Изменение версии или удаление базы данных в другом окне или вкладке

Сводная таблица методов
Имя метода Объект Функционал Возвращаемое значение
abort IDBTransaction Прерывает (отменяет) транзакцию. undefined
add IDBObjectStore Создает запрос на добавление новой "записи" в хранилище объектов. Экземпляр объекта IDBRequest
advance IDBCursor Перемещает курсор на заданное количество "записей" от текущей в направлении к концу диапазона. undefined
bound IDBKeyRange Создает диапазон значений ключа или индекса. Экземпляр объекта IDBKeyRange
clear IDBObjectStore Создает запрос на удаление всех "записей" в хранилище объектов. Экземпляр объекта IDBRequest
close IDBDatabase Инициирует закрытие подключения к базе данных. undefined
cmp IDBFactory Сравнивает два значения как первичные ключи. Флаг сравнения
continue IDBCursor Перемещает курсор на следующую "запись" от текущей. undefined
count IDBObjectStore
IDBIndex
Создает запрос на подсчёт всех "записей" в диапазоне значений первичного ключа или индекса из хранилища объектов. Экземпляр объекта IDBRequest
createIndex IDBObjectStore Создает индекс в хранилище объектов. Экземпляр объекта IDBIndex
createObjectStore IDBDatabase Создает хранилище объектов в базе данных. Экземпляр объекта IDBObjectStore
delete IDBObjectStore Создает запрос на удаление "записи" с заданным значением первичного ключа из хранилища объектов. Экземпляр объекта IDBRequest
delete IDBCursor Создает запрос на удаление "записи", на которой остановился курсор. Экземпляр объекта IDBRequest
deleteDatabase IDBFactory Создает запрос на удаление базы данных. Экземпляр объекта IDBOpenDBRequest
deleteIndex IDBObjectStore Удаляет индекс в хранилище объектов. undefined
deleteObjectStore IDBDatabase Удаляет хранилище объектов в базе данных. undefined
get IDBObjectStore
IDBIndex
Создает запрос на чтение одной "записи" с заданным значением первичного ключа или индекса из хранилища объектов. Экземпляр объекта IDBRequest
includes IDBKeyRange Проверяет значение на принадлежность к диапазону значений ключа или индекса. Логическое значение
index IDBObjectStore Открывает индекс в хранилище объектов. Экземпляр объекта IDBIndex
lowerBound IDBKeyRange Создает диапазон значений ключа или индекса ограниченный начальным значением. Экземпляр объекта IDBKeyRange
objectStore IDBTransaction Обращается к хранилищу объектов. Экземпляр объекта IDBObjectStore
only IDBKeyRange Создает диапазон значений ключа или индекса из единственного значения. Экземпляр объекта IDBKeyRange
open IDBFactory Создает запрос на создание и(или) подключение к базе данных. Экземпляр объекта IDBOpenDBRequest
openCursor IDBObjectStore
IDBIndex
Создает запрос на получение экземпляра объекта IDBCursorWithValue для заданного диапазона значений первичного ключа или индекса из хранилища объектов. Экземпляр объекта IDBRequest
openKeyCursor IDBObjectStore
IDBIndex
Создает запрос на получение экземпляра объекта IDBCursor для заданного диапазона значений первичного ключа или индекса из хранилища объектов. Экземпляр объекта IDBRequest
put IDBObjectStore Создает запрос на добавление новой "записи" или замену существующей в хранилище объектов, с заданным первичным ключом и значением. Экземпляр объекта IDBRequest
transaction IDBDatabase Создает транзакцию в базе данных. Экземпляр объекта IDBTransaction
update IDBCursor Создает запрос замещение значения "записи", на которой остановился курсор. Экземпляр объекта IDBRequest
upperBound IDBKeyRange Создает диапазон значений ключа или индекса ограниченный конечным значением. Экземпляр объекта IDBKeyRange

Сводная таблица свойств
Имя свойства Объект Содержание Тип значения
autoIncrement IDBObjectStore Флаг автогенератора значений первичного ключа хранилища объектов. Логический формат
direction IDBCursor Направление последнего перемещения курсора. Строковый формат
error IDBTransaction В случае неудачной транзакции содержит ссылку на экземпляр объекта Error. Экземпляр объекта
error IDBRequest В случае состояния запроса в положении done содержит ссылку на экземпляр объекта Error. Экземпляр объекта
indexNames IDBObjectStore Список - имён индексов хранилища объектов. Экземпляр объекта
isAutoLocale IDBIndex Флаг locale = auto. Логический формат
key IDBCursor Значение индекса "записи", на которой находится курсор. Любой формат
keyPath IDBObjectStore
IDBIndex
Первичный ключ хранилища объектов. Строковый формат
locale IDBIndex Флаг locale. Строковый формат
lower IDBKeyRange Начальное значение диапазона. Любой формат
lowerOpen IDBKeyRange Флаг принадлежности начального значения диапазона. Логический формат
mode IDBTransaction Тип транзакции. Строковый формат
multiEntry IDBIndex Флаг multiEntry. Логический формат
name IDBDatabase Имя открытой базы данных. Строковый формат
name IDBObjectStore Имя хранилища объектов. Строковый формат
name IDBIndex Имя индекса. Строковый формат
newVersion IDBVersionChangeEvent Значение новой версии базы данных. Числовой формат
objectStore IDBIndex Экземпляр объекта IDBObjectStore. Экземпляр объекта
objectStoreNames IDBDatabase Список - имён хранилищ объектов открытой базы данных. Экземпляр объекта
objectStoreNames IDBTransaction Список - имён хранилищ объектов, на которые распространяется транзакция. Экземпляр объекта
oldVersion IDBVersionChangeEvent Значение старой версии базы данных. Числовой формат
primaryKey IDBCursor Значение первичного ключа "записи", на которой находится курсор. Любой формат
readyState IDBRequest Состояние асинхронного запроса. Строковый формат
result IDBRequest В случае состояния запроса в положении done содержит его результат. Любой формат
source IDBCursor Экземпляр объекта IDBObjectStore или IDBIndex - источник курсора. Экземпляр объекта
source IDBRequest В случае состояния запроса в положении done содержит экземпляр объекта IDBObjectStore, IDBIndex или IDBCursor - источник запроса. Экземпляр объекта
transaction IDBObjectStore Экземпляр объекта IDBTransaction. Экземпляр объекта
transaction IDBRequest В случае состояния запроса в положении done содержит экземпляр объекта IDBTransaction - транзакции в рамках которой выполнялся запрос. Экземпляр объекта
unique IDBIndex Флаг unique. Логический формат
upper IDBKeyRange Конечное значение диапазона. Любой формат
upperOpen IDBKeyRange Флаг принадлежности конечного значения диапазона. Логический формат
value IDBCursorWithValue Значение "записи", на которой находится курсор. Любой формат
version IDBDatabase Версия открытой базы данных. Числовой формат
Пример (Chrome).
<DIV ID="TOIDB">IDBCursor:</DIV>
<BUTTON ID="START">Пример - старт</BUTTON>
<SCRIPT>
  var Factory = null;
  var Rdelete = null;
  var Ropen = null;
  var Idb = null;
  var Trans = null;
  var Store = null;
  var Rcount = null;
  var Cursor = null;
  var Curs = null;
  var Latin = [26];
  Latin[0] = "Q";
  Latin[1] = "W";
  Latin[2] = "E";
  Latin[3] = "R";
  Latin[4] = "T";
  Latin[5] = "Y";
  Latin[6] = "U";
  Latin[7] = "I";
  Latin[8] = "O";
  Latin[9] = "P";
  Latin[10] = "A";
  Latin[11] = "S";
  Latin[12] = "D";
  Latin[13] = "F";
  Latin[14] = "G";
  Latin[15] = "H";
  Latin[16] = "J";
  Latin[17] = "K";
  Latin[18] = "L";
  Latin[19] = "Z";
  Latin[20] = "X";
  Latin[21] = "C";
  Latin[22] = "V";
  Latin[23] = "B";
  Latin[24] = "N";
  Latin[25] = "M";
  var Obj = {IDK: null, Val: 0};
  var I = 0;
  var IV = null;;
  var Sstart = document.getElementById("START");
  var Tow = document.getElementById("TOIDB");
  var start = function(W)
    {
      Factory = indexedDB;
      Rdelete = Factory.deleteDatabase("DB");
      Tow.innerHTML = "IDBCursor:";
      Ropen = Factory.open("DB", 1);
      Ropen.onupgradeneeded = createOS;
      Ropen.onsuccess = openCur;
      Sstart.disabled = true;
    };
  var createOS = function(W)
    {
      Idb = W.target.result;
      Store = Idb.createObjectStore("DB1", {keyPath: "IDK", autoIncrement: false});
    };
  var openCur = function(W)
    {
      Idb = W.target.result;
      Trans = Idb.transaction("DB1", "readwrite");
      Store = Trans.objectStore("DB1");
      I = 0;
      while ( I < 26 )
        {
          Obj.IDK = Latin[I];
          Obj.Val = I;
          Store.add(Obj);
          I++;
        };
      alert("База данных получена - потвердите openCursor");
      Rcount = Store.openCursor();
      Rcount.onsuccess = continueCur;
    };
  var continueCur = function(W)
    {
      Cursor = W.target.result;
      IV = Tow.innerHTML + " " + "" + Cursor.key + "";
      Tow.innerHTML = IV;
      if ( Cursor.key == "Z" )
        {
          Idb.close();
          Sstart.disabled = false;
        }
      Cursor.continue();
    };
  Sstart.onclick = start;

</SCRIPT>
IDBCursor: