模型中列的对象变量数

Objection variable number of columns in a model

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

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 模型描述这个?

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

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