Объекты и хранилища объектов

Объекты и хранилища объектов.

То, что в привычных базах данных мы называем записями, в IndexedDB носит название объектов. К числу объектов относятся также свойства, позволяющие сохранять и идентифицировать значения. Количество свойств и структура объектов определяются произвольно и могут быть любыми. Единственное ограничение: как минимум одно свойство необходимо объявить индексом хранилища объектов, для того чтобы иметь возможность выполнять поиск по хранилищу и извлекать нужные данные.

С хранилищами объектов (таблицами) также не связываются никакие конкретные требования к структуре. В момент создания требуется объявить только название и один или несколько индексов, позволяющих находить объекты внутри хранилища.

Типичное хранилище объектов (рис. 11.1) может содержать объекты с самыми разными свойствами. У одних объектов есть свойство DVD, у других — свойство Book и т. д. У каждого объекта своя структура, но для того, чтобы их можно было находить в базе, объекты должны обладать как минимум одним свойством-индексом. В примере на рис. 11.1 в роли индекса может выступать свойство Id.

Для того чтобы приступить к работе с объектами и хранилищами объектов, необходимо всего лишь создать хранилище объектов и объявить

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

В API предусмотрены несколько методов для манипулирования хранилищами объектов:

- createObjectStore(name, keyPath, autoincrement). Создает новое хранилище объектов с именем и настройками, определяемыми его атрибутами. Обязательно указывать только название — атрибут name. Атрибут keyPath объявляет общий индекс для всех объектов. Атрибут autoIncrement — это булево значение, определяющее, будет ли в хранилище объектов использоваться генератор ключей;

- objectStore(name). Для доступа к объектам в хранилище объектов необходимо начать транзакцию и открыть хранилище для данной транзакции. Этот метод открывает хранилище объектов с именем, указанным в атрибуте name;

- deleteObjectStore(name). Разрушает хранилище объектов с именем, указанным в атрибуте name.

Методы createObjectStore() и deleteObjectStore(), как и другие методы, ответственные за конфигурацию базы данных, применяются только при создании базы данных или обновлении ее до новой версии.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *