Dexie - 检查记录是否存在,如果不存在则初始化它

Dexie - Check if a record exists and initialize it if not present

我正在 Angular2 项目中实施 Dexie 2.0。

我有一个简单的 table,它应该只包含一个用于订单命名的记录。

我要做的是在 table 中检查 IndexedDb 是否有记录,如果没有,则初始化它...非常简单。

这是代码:

this.OrderCounter.toArray().then(function (arr) {
        if (arr.length == 1) {
          console.log('Do nothing');
        }
        else {
          console.log('Initialize Counter');          
          this.OrderCounter.add(1);          
        }
      });

此刻 table 是空的,如果我 运行 脚本,我会在初始化记录的行命令上得到 "this is undefined"...

我需要更改什么?

感谢支持

问题出在 javascript 中 this 的性质。尝试用箭头函数 (arr) => { ... } 替换 function (arr) { ... } 并且你的 this 指针将粘在你的 class 实例上。

如果您使用的是 JavaScript 的旧版本,那么您可能无法使用箭头功能。解决此问题的较旧方法是在函数调用之前将 "this" 放入变量中。

var self = this;
this.OrderCounter.toArray().then(function (arr) {
if (arr.length == 1) {
  console.log('Do nothing');
}
else {
  console.log('Initialize Counter');          
  self.OrderCounter.add(1);          
}

});