Javascript 在调用Dexie后,已连接到IndexedDB数据库

Javascript 在调用Dexie后,已连接到IndexedDB数据库,javascript,indexeddb,dexie,Javascript,Indexeddb,Dexie,当我尝试在一个数据库上调用Dexie时,IndexedDB已经对该数据库进行了另一次调用,这时会出现一个错误,即已经与该数据库建立了连接 我们可以将Indexedb的现有连接传递给Dexie吗? 当我们想在一个Dexie对象和另一个对象中使用相同的连接时,这会很有帮助,当我尝试将Dexie添加到我的项目中时,这种情况就会发生。我不想重写现有的函数 例如: function initDataBase(callback){ if(window.indexedDB){

当我尝试在一个数据库上调用Dexie时,IndexedDB已经对该数据库进行了另一次调用,这时会出现一个错误,即已经与该数据库建立了连接

我们可以将Indexedb的现有连接传递给Dexie吗? 当我们想在一个Dexie对象和另一个对象中使用相同的连接时,这会很有帮助,当我尝试将Dexie添加到我的项目中时,这种情况就会发生。我不想重写现有的函数

例如:

    function initDataBase(callback){
        if(window.indexedDB){
            var requeteBDD = window.indexedDB.open("databasename",1);
            requeteBDD.onsuccess = function(){
                if(typeof callback == "function") 
                 callback(requeteBDD.result);
            };
         }
     }
例如,我们能做到吗

 initDataBase(function(db){
    var dex = new Dexie(db);
 });
我想使用与第一个相同的连接。
有可能吗?

从当前版本开始,不可能将IDBDatabase的实例传递到Dexie构造函数中。然而,这在源代码中肯定是一个简单的拉式请求,因为Dexie已经能够按名称打开现有数据库并适应其现有模式

但是,如果将多个IDB数据库实例化为同一个数据库名称,则不应出现错误,除非其中一个数据库尝试使用其他版本进行升级

Dexie可以在不创建模式的情况下打开现有数据库,即使您只能传递名称而不能传递db实例,如下图所示:

这会失败,因为给定的数据库不存在。但如果您在JSFIDLE上创建并再次运行它,您将看到它是打开的

new Dexie('MyDatabase').open().then(function (db) {
    log ("Found database: " + db.name);
    log ("Database version: " + db.verno);
    db.tables.forEach(function (table) {
        log ("Found table: " + table.name);
        log ("Table Schema: " +
            JSON.stringify(table.schema, null, 4));
    });
}).catch('NoSuchDatabaseError', function(e) {
    // Database with that name did not exist
    log ("Database not found");
}).catch(function (e) {
    log ("Oh uh: " + e);
});