indexeddb-export-import
v2.1.5
Published
Export/import an IndexedDB database to/from JSON
Downloads
14,018
Maintainers
Readme
indexeddb-export-import - JSON export/import for IndexedDB
IndexedDB is a client-side database API available in modern browsers and https://electron.atom.io/. During development and testing of an web / desktop app which uses IndexedDB, it can be helpful to save, load, or clear the contents of an IndexedDB database - this package provides that capability.
You can use indexeddb-export-import in a Node.js environment imported as a module (eg. for use with an Electron app). You may also use it in a browser environment by simply including via a <script>
tag.
Usage
You will need an open IDBDatabase connection.
The following example exports a database, clears all object stores, then re-imports the database. It uses Dexie.js to initiate the database, but this is not required.
const Dexie = require('dexie');
const IDBExportImport = require('indexeddb-export-import');
const db = new Dexie('MyDB');
db.version(1).stores({
things: 'id++, thing_name, thing_description',
});
db.open().then(function() {
const idbDatabase = db.backendDB(); // get native IDBDatabase object from Dexie wrapper
// export to JSON, clear database, and import from JSON
IDBExportImport.exportToJsonString(idbDatabase, function(err, jsonString) {
if (err) {
console.error(err);
} else {
console.log('Exported as JSON: ' + jsonString);
IDBExportImport.clearDatabase(idbDatabase, function(err) {
if (!err) { // cleared data successfully
IDBExportImport.importFromJsonString(idbDatabase, jsonString, function(err) {
if (!err) {
console.log('Imported data successfully');
}
});
}
});
}
});
}).catch(function(e) {
console.error('Could not connect. ' + e);
});
API
exportToJsonString(idbDatabase, cb)
Export all data from an IndexedDB database
| Param | Type | Description | | --- | --- | --- | | idbDatabase | IDBDatabase | | | cb | function | callback with signature (error, jsonString) |
importFromJsonString(idbDatabase, jsonString, cb)
Import data from JSON into an IndexedDB database. This does not delete any existing data from the database, so keys could clash
| Param | Type | Description | | --- | --- | --- | | idbDatabase | IDBDatabase | | | jsonString | string | data to import, one key per object store | | cb | function | callback with signature (error), where error is null on success |
clearDatabase(idbDatabase, cb)
Clears a database of all data
| Param | Type | Description | | --- | --- | --- | | idbDatabase | IDBDatabase | | | cb | function | callback with signature (error), where error is null on success |
Installation
$ npm install indexeddb-export-import
License
MIT