【问题标题】:Sequelize extend Model Class in TypescriptSequelize 在 Typescript 中扩展模型类
【发布时间】:2020-12-08 04:10:41
【问题描述】:

我正在处理一个希望迁移到 Typescript 的遗留项目。它具有以下格式定义的模型:

import Sequelize from "sequelize";

class MyModel extends Sequelize.Model {
  public static init(sequelize) {
    const attributes = {
      userId: {
        type: Sequelize.INTEGER,
        allowNull: false,
        field: "user_id"
      },
      createdAt: {
        type: Sequelize.DATE,
        field: "created_at"
      }
    };

    super.init(attributes, {
      sequelize
    });
  }
}

export default MyModel;

我想将它们转换为打字稿,而不必为消费者更改界面。我的意思是我想扩展 Sequelize.Model 并且我想定义一个 public static init 方法。

我在Sequelize.Model 上从 Typescript 收到以下错误

Type 'Model<any, any>' is not a constructor function type.

我所做的所有研究都指向使用Sequelize.define 来定义模型。

这是一个遗留项目,我不想为了符合类型而重写所有模型,所以我想知道如何正确扩展Sequelize.Model

谢谢

【问题讨论】:

  • 它在运行时有效吗?你使用的是哪个版本的sequelize
  • @KarolMajewski - 当它是纯 JS 时,它工作得很好。当它是.ts 文件时,它不会编译,因此我无法在运行时对其进行测试。我正在使用sequelize 4.42.0 和@types/sequelize 4.27.33

标签: typescript sequelize.js


【解决方案1】:

试试这个

public static init(sequelize) {
    super.init.call(this,{ 
        id: {
        type: DataTypes.INTEGER.UNSIGNED,
        autoIncrement: true,
        primaryKey: true,
        },  
        text: {
        type: DataTypes.STRING(5000) // extra long length
        }  
    }, {
        sequelize: sequelize
    });
}

【讨论】:

    【解决方案2】:

    我自己只是在为类似的问题而苦苦挣扎,这似乎对我有用-

    class MyModel extends Sequelize.Model {
        public static initialize(sequelize) {
            const attributes = {
                userId: {
                    type: Sequelize.INTEGER,
                    allowNull: false,
                    field: "user_id"
                },
                createdAt: {
                    type: Sequelize.DATE,
                    field: "created_at"
                }
            };
    
            return this.init(attributes, {
                sequelize
            });
        }
    }
    

    请注意,我将静态方法重命名为“initialize”而不是“init”。

    【讨论】:

      猜你喜欢
      • 2013-11-10
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 2017-05-14
      • 2018-05-08
      相关资源
      最近更新 更多