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

时间:2017-10-19 13:29:02

标签: angular dexie

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

我有一个简单的表,只能包含一个用于命令命名的记录。

我要做的是检查IndexedDb如果表有记录,如果没有,请初始化它......非常简单。

这是代码:

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

此时表是空的,如果我运行脚本,我会在初始化记录的行命令上得到“这是未定义的”...

我需要改变什么?

感谢支持

2 个答案:

答案 0 :(得分:1)

这是javascript中this的本质问题。尝试使用箭头函数function (arr) { ... }替换(arr) => { ... },并且this指针将粘贴到您的类实例。

答案 1 :(得分:1)

如果您使用的是旧版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);          
}

});