Files
tubestation/addon-sdk/source/doc/module-source/sdk/indexed-db.md

4.4 KiB

The indexed-db module exposes the IndexedDB API to add-ons.

Scripts running in web pages can access IndexedDB via the window object. For example:

window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;

var request = window.indexedDB.open("MyDatabase");
request.onerror = function(event) {
  console.log("failure");
};
request.onsuccess = function(event) {
  console.log("success");
};

Because your main add-on code can't access the DOM, you can't do this. So you can use the indexed-db module to access the same API:

var { indexedDB } = require('indexed-db');

var request = indexedDB.open('MyDatabase');
request.onerror = function(event) {
  console.log("failure");
};
request.onsuccess = function(event) {
  console.log("success");
};

This module also exports all the other objects that implement the IndexedDB API, listed below under [API Reference](modules/sdk/indexed-db.html#API Reference).

The API exposed by indexed-db is almost identical to the DOM IndexedDB API, so we haven't repeated its documentation here, but refer you to the IndexedDB API documentation for all the details.

The database created will be unique and private per addon, and is not linked to any website database. The module cannot be used to interact with a given website database. See bug 778197 and bug 786688.

Example of Usage

Promise-based example using indexedDB for record storage.

@property {object}

Enables you to create, open, and delete databases. See the IDBFactory documentation.

@property {object}

Defines a range of keys. See the IDBKeyRange documentation.

@property {object}

For traversing or iterating records in a database. See the IDBCursor documentation.

@property {object}

Represents a database transaction. See the IDBTransaction documentation.

@property {object}

Represents an asynchronous request to open a database. See the IDBOpenDBRequest documentation.

@property {object}

Event indicating that the database version has changed. See the IDBVersionChangeEvent documentation.

@property {object}

Represents a connection to a database. See the IDBDatabase documentation.

@property {object}

Enables you to create, open, and delete databases. See the IDBFactory documentation.

@property {object}

Provides access to a database index. See the IDBIndex documentation.

@property {object}

Represents an object store in a database. See the IDBObjectStore documentation.

@property {object}

Provides access to the results of asynchronous requests to databases and database objects. See the IDBRequest documentation.

@property {object}

Provides more detailed information about an exception. See the DOMException documentation.