【问题标题】:Using Sequelize.Instance with Sequelize v5 & Typescript将 Sequelize.Instance 与 Sequelize v5 和 Typescript 一起使用
【发布时间】:2019-11-07 05:10:28
【问题描述】:

在大多数指南、聊天、教程等中...键入 Sequelize 模型的推荐方法是使用以下代码:

export interface IUserInstance extends Sequelize.Instance<IUserAttributes>, IUserAttributes {
  prototype: {
    verifyPassword: (password: string) => boolean;
  };
}

这里的关键部分是Sequelize.Instance&lt;,在 Sequelize v5+ 中你会看到错误:

Namespace '".../node_modules/sequelize/types/index"' has no exported member 'Instance'.

我环顾四周,但没有找到解决方案。

** 查看本指南,“sequelize.define 的使用”部分 http://docs.sequelizejs.com/manual/typescript

在使用 define 和 typescript 时似乎没有明确的方法来处理关联。

任何帮助/建议将不胜感激。

参考资料:

问候, 埃米尔

【问题讨论】:

    标签: typescript sequelize.js


    【解决方案1】:

    我搜索了很多解决这个问题的方法,并得到了以下解决方案:

    import sequelizeInstance from '..';
    import { Model, DataTypes } from 'sequelize';
    
    const config = {
      tableName: 'User',
      sequelize: sequelizeInstance,
    };
    
    class User extends Model {
      id!: number;
      firstName!: string;
      lastName!: string;
      /* some other properties*/
    
      verifyPassword: (password: string) => boolean;
    
      public readonly createdAt!: Date;
      public readonly updatedAt!: Date;
    }
    User.init(
      {
        id: {
          primaryKey: true,
          type: DataTypes.INTEGER,
          autoIncrement: true,
        },
        firstName: {
          type: DataTypes.STRING,
        },
        lastName: {
          type: DataTypes.STRING,
        }
      },
      config,
    );
    
    User.prototype.verifyPassword = function(password: string) {
      /* code here ... */
    };
    
    export default User;
    

    【讨论】:

    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2017-08-23
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多