crosswalk+cordova indexedDB 在应用程序更新时被覆盖

crosswalk+cordova indexedDB overwritten on app update

我正在使用 pouchDB 作为存储,使用 crosswalk+cordova 制作一个混合应用程序。问题是,当我安装新版本(在 android 上)时,浏览器 indexedDB/webSQL 被完全覆盖,因此所有用户数据...有什么方法可以在 android/ios 上更新混合应用程序保留用户数据? 谢谢

IndexedDB 绑定到您的基础 URL

如果您在 config.xml 中更改应用名称或基础 URL(内容来源),您将无法访问之前的应用。

一方面,我正在使用 localforage 库和 cordova s​​qlite 插件来消除浏览器错误和实现细节。 iOS 可能会引起一些头痛,请注意

我在 config.xml 中的内容条目:

<content src="index.html" />

我的相关插件相关条目in config.xml:

<plugin name="cordova-plugin-sqlite-2" spec="~1.0.4" />
    <plugin name="cordova-plugin-crosswalk-webview" spec="~2.1.0">
        <variable name="XWALK_VERSION" value="21+" />
        <variable name="XWALK_LITEVERSION" value="xwalk_core_library_canary:17+" />
        <variable name="XWALK_COMMANDLINE" value="--disable-pull-to-refresh-effect" />
        <variable name="XWALK_MODE" value="embedded" />
        <variable name="XWALK_MULTIPLEAPK" value="false" />
    </plugin>

这是我在 Javascript 应用程序中的数据库初始化函数(它 returns 一个承诺):

    function initDB() {

    let driver = [localforage.INDEXEDDB, localforage.WEBSQL]
    //force shim
    if (platform() === constants.PLATFORM_IOS) {
        if (window.sqlitePlugin) {
            //WEBSQL shim throgh sqlite2
            window.openDatabase = window.sqlitePlugin.openDatabase
        }
        driver = localforage.WEBSQL
    }


    let opts = {
        driver: driver,
        name: constants.DBName + '_forage',
        version: constants.appVersion,
        size: 4980736
    }

    localforage.config(opts)


    let stores = {
        state: localforage.createInstance({storeName: 'state'}),
        api_cache: localforage.createInstance({storeName: 'apiCache'})
    }

    const keys = Object.keys(stores)

    let p = new Promise((res, rej)=> {
        let r = 0;

        function check() {
            r++
            if (r === keys.length) {
                res(stores)
            }
        }
        keys.forEach(k=>stores[k].ready(check))

    })

    return p

}

localforage 可以在这里找到:https://github.com/localForage/localForage.git