1

我需要检查某个表在打开后是否已经存在于 IndexedDB 中。但我不知道如何在“then”语句中获取 DexieDB 对象。

this.db = new Dexie("DBNAME");
if (!this.db.isOpen()) {
    this.db.open().then(function () {
        //how to get this.db.table(storeName) here?
    }).catch(function (error) {
        console.log(error)
    });
}

所以this.db在“then”语句中不存在。如何得到它?

4

1 回答 1

2

在德克西

特别是在 Dexie 中,您不必像那样打电话isOpenopen()您可以这样做,.open事情会像这样工作:

// Declare db instance
var db = new Dexie("MyDatabase");

// Define Database Schema
//...
// Open Database
db.open(); 

db.trasnaction(...

一般来说

这是一个经典的 JS 上下文值。JavaScript 中的工作方式this不同 -这是您应该阅读的有关它的规范参考

此外 - 关于在 then 链中传递参数,您应该参考这个优秀的问答,它涵盖了更一般的方法

那里描述的解决方法(带有上下文)通常适用并包含更多可以在此处帮助您的库特定代码。

于 2015-02-03T12:05:51.023 回答