Skip to content

seekcx/egg-sequelize-type

 
 

Repository files navigation

egg-sequelize-type

重新发布说明

此前仓库依赖了低版本的 sequelizesequelize-typescript,并且长期没有维护。重新发布移除了直接依赖,改为推荐。

更改

插件只是将 egg-sequelize 中的 sequelize 替换为 sequelize-typescript, 同时保证用户在 egg.js 创建的项目中使用 egg-sequelize 的方法尽量一致,在使用时的不同,我将下面一一阐述。 其他内容部分请查看 egg-sequelize。 此插件已在生产项目中得到实践。

目的

能让使用 typescript 编写的 egg.js 项目中能够使用 sequelize方法,并同时得到egg.js所赋予的功能。

安装

$ npm i --save egg-sequelize-type
$ yarn add egg-sequelize-type

配置

  • Enable plugin in config/plugin.js
  • config/plugin.js 文件中引入 egg-sequelize-type 组件
exports.sequelize = {
    enable: true,
    package: 'egg-sequelize-type'
}
  • Edit your own configurations in conif/config.{env}.jsconif/config.{env}.js 中编写 sequelize 配置
    config.sequelize = {
        dialect: 'mysql',
        host: '127.0.0.1',
        port: 3306,
        database: 'database'
    };

例子

分别以 model/user.js 和 service/user.js 举例说明

note 注意我们都是从 sequelize-typescript 中导出类名,方法,属性等。

// app/model/user.js

/**
 * @desc 用户表
 */
import { AutoIncrement, Column, DataType, Model, PrimaryKey, Table } from 'sequelize-typescript';
@Table({
    modelName: 'user'
})
export class User extends Model<User> {

    @PrimaryKey
    @AutoIncrement
    @Column({
        type: DataType.INTEGER(11),
        comment: '用户ID',
        comment: 'user id'
    })
    id: number;

    @Column({
        comment: '用户姓名',
    })
    name: string;

    @Column({
        comment: '用户邮箱'
    })
    email: string;

    @Column({
        comment: '用户手机号码'
    })
    phone: string;

    @Column({
        field: 'created_at'
    })
    createdAt: Date;

    @Column({
        field: 'updated_at'
    })
    updatedAt: Date;
};
export default () => User;
// app/service/user.js
import { Service } from 'egg';
import { Sequelize } from 'sequelize-typescript';

class UserService extends Service {
  async index() {
    const { or } = Sequelize.Op;
    const users = await this.ctx.model.User.findOne({
        where: {
            [or]: [
                { name, phone },
                { id }
            ]
        }
    });
    this.ctx.body = users;
  }
}

About

Sequelize Typescript for Egg.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%