gpt4 book ai didi

javascript - 在 Dexie 中调用后已与 IndexedDB 数据库建立连接

转载 作者:行者123 更新时间:2023-12-03 02:22:04 24 4
gpt4 key购买 nike

当我尝试对已由 IndexedDB 执行过另一次调用的数据库调用 Dexie 时,会出现错误,表明已与数据库建立连接。

我们可以将 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 已经能够按名称打开现有数据库并适应其现有架构。

但是,如果您将多个 IDBDatabase 实例化为同一数据库名称,则不应收到错误,除非其中一个数据库尝试使用另一版本进行升级。

Dexie 可以在不创建架构的情况下打开现有数据库(即使您只能传递名称而不是数据库实例),如以下 fiddle 所示:https://jsfiddle.net/dfahlander/b8Levamm/

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);
});

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

关于javascript - 在 Dexie 中调用后已与 IndexedDB 数据库建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com