【问题标题】:Dexie - Check if a record exists and initialize it if not presentDexie - 检查记录是否存在,如果不存在则初始化它
【发布时间】:2018-03-31 13:26:33
【问题描述】:

我正在一个 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);          
        }
      });

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

我需要改变什么?

感谢支持

【问题讨论】:

    标签: angular dexie


    【解决方案1】:

    问题在于 JavaScript 中 this 的性质。尝试用箭头函数(arr) => { ... } 替换function (arr) { ... },您的this 指针将粘在您的类实例上。

    【讨论】:

    • 谢谢大卫...你一如既往地珍贵... Dexie 组件在我的第一个实现本地存储的项目中工作得非常好...
    【解决方案2】:

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

    });

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2019-10-13
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 2011-05-12
      • 2011-09-15
      相关资源
      最近更新 更多