使用“ vuex-orm-decorators”时出现“ TypeError:this.types不是函数”

时间:2019-11-24 18:13:45

标签: vuex-orm

我正在尝试使用concatenate中的npm包'vuex-orm-decorators'

当我尝试插入数据库时​​,出现错误TypeError: this.types is not a function

实体看起来像这样

import { Model } from "@vuex-orm/core";
import { NumberField, OrmModel, StringField } from "vuex-orm-decorators";

@OrmModel("races")
export default class Race extends Model {
  @NumberField()
  public ID!: number;

  @StringField()
  public Name!: string;
}

商店看起来像这样:

import Vue from "vue";
import Vuex from "vuex";
import { ORMDatabase } from "vuex-orm-decorators";

Vue.use(Vuex);

export default new Vuex.Store({
  .
  .
  .
  plugins: [ORMDatabase.install()]
});

另外,也许这是一个线索。...在Vuex-Orm中,this.setters返回值,但是this.setters('all')返回未定义。

/**
 * Get all records.
 */
Model.all = function () {
   return this.getters('all')();
};

通过查看未定义的基本字段和函数,似乎vuex-orm数据库未正确设置。有任何想法吗?

我试图为vuex-orm-decorators创建一个stackoverflow标签,但是我还没有达到1500 rep,所以我只是将其标记为vuex-orm。

1 个答案:

答案 0 :(得分:0)

在Vuex-ORM vuex-orm-decorators文档中定义的types函数的实现中,Single Table Inheritance包中有一个小错误。

我创建了一个fork,在其中解决了这个简单的问题,并创建了pull request以更新原始程序包。

最后,我要指出的一点是,从我对该程序包的细微了解来看,它尚未完全为Vuex-ORM内置的表继承功能做好准备,但对于简单用例仍然非常有用。