首页 > 解决方案 > 模型中的反对变量列数

问题描述

好吧,我有一个来自数据库模式的模型。然而,这个模式本身可能是可变的,除了id和列之外,key列的数量可能会随着时间的推移而改变/增长,我事先不知道列的名称。(是的,我意识到这不是设计数据库的正确方法,但这是我们现在所拥有的)。

export class PersonModel extends Model {
    static get tableName() {
        return "person"
    }

    static get idColumn() {
        return "id";
    }

    static get keyColumn() {
        return "key";
    }

    //And some variable number of other columns.

}

我将如何描述Objection模型?

标签: javascriptknex.jsobjection.js

解决方案


您可以将类包装到一个函数中以定义其属性。这是一个仅传递表名的示例:

export dynamicModelFactory = ({tableName}) => {

  class DynamicModel extends Model {
    static get tableName() {
        return tableName
    }

    static get idColumn() {
        return "id";
    }

    static get keyColumn() {
        return "key";
    }

    //And some variable number of other columns.
  }

  return DynamicModel
}

const PersonModel = dynamicModelFactory({tableName: 'person'}) // Getting the Objection dynamic model for person tablename

推荐阅读