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