Wondering what’s next for npm?Check out our public roadmap! »

    cordova-plugin-indexeddb-async

    2.2.1 • Public • Published

    Asynchronous IndexedDB plugin for Cordova

    Dependencies npm License

    Features

    Installation

    Install via the Cordova CLI.

    For Cordova CLI 4.x, use the GIT URL syntax:

    cordova plugin add https://github.com/ABB-Austin/cordova-plugin-indexeddb-async.git

    For Cordova CLI 5.x, use the new npm syntax:

    cordova plugin add cordova-plugin-indexeddb-async

    Using the Plugin

    Cordova will automatically load the plugin and run it. So all you need to do is use IndexedDB just like normal.

    Here's an example

    Supported Platforms

    This plugin supports ios, android, and windows (phone and desktop), as well as the new browser platform.

    Android

    Android 4.3 and earlier do not support IndexedDB, so this plugin will automatically add IndexedDB support. On Android 4.4 and later, the plugin does nothing, since IndexedDB is already natively supported.

    Browser

    All modern browsers natively support IndexedDB, so the plugin won't do anything. But for older browsers that support WebSQL, this plugin will automatically add IndexedDB support.

    iOS

    iOS 7 and earlier do not support IndexedDB, so this plugin will automatically add IndexedDB support. On iOS 8 and later, the plugin does nothing, since IndexedDB is already natively supported.

    iOS 8's implementation of IndexedDB is very buggy. So, you may want to use this plugin rather than the native implementation. To do that, add the following line of code to your app:

    window.shimIndexedDB.__useShim()
    Known Issue on iOS

    Due to a bug in WebKit, the window.indexedDB property is read-only and cannot be overridden by IndexedDBShim. Until the bug is fixed, the only workaround is to create an indexedDB variable in your closure. That way, all code within that closure will use the variable instead of the window.indexedDB property. For example:

    (function() {
        // This works on all devices/browsers, and only uses IndexedDBShim as a final fallback 
        var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;
     
        // This code will use the native IndexedDB if it exists, or the shim otherwise
        indexedDB.open("MyDatabase", 1);
    })();

    Windows

    Windows 8 and 8.1 support IndexedDB natively, so the plugin won't do anything by default.

    Windows 8.x's implementation of IndexedDB is mising some features, such as compound keys and compound indexes. If you need those features in your app, then you may want to use this plugin rather than the native implementation. To do that, add the following line of cose to your app:

    window.shimIndexedDB.__useShim()

    Windows Phone

    Windows Phone does not support IndexedDB or WebSQL, so this plugin will automatically load the asynchronous WebSQL plugin to add WebSQL support, and then use IndexedDBShim to expose WebSQL to your app via the IndexedDB API. It's complicated, but it works. :)

    The WebSQL plugin is specifically written for Windows Phone, so it only supports the two processor architectures that Windows Phone supports (x86 and arm). This means that you need to specify an extra flag when building your Windows Phone app via Cordova:

    cordova build windows --archs="x86 arm" -- --phone

    Install

    npm i cordova-plugin-indexeddb-async

    DownloadsWeekly Downloads

    41

    Version

    2.2.1

    License

    Apache-2.0

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar