0.1.1 • Published 2 years ago

@elt_common/egg_typeorm v0.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

@elt_common/egg_typeorm

安装

rush add -p @elt_common/egg_typeorm -s
rush add -p typeorm -s
rush add -p mysql2

使用

插件启用

// api/app/config/plugin.ts
const plugin: EggPlugin = {
  typeorm: {
    enable: true,
    package: '@elt_common/egg_typeorm',
  },
}

配置config.{env}.ts

connection-options

// api/app/config/config.default.ts
import { EggAppConfig, PowerPartial } from 'egg';
import path from 'path';

export default () => {
  const config = {} as PowerPartial<EggAppConfig>;

  // 单连接
  config.typeorm = {
    databases: [
      {
        type: 'mysql',
        logging: false,
        host: 'localhost',
        port: 3306,
        username: 'xxx',
        password: 'xxx',
        database: 'test',
        charset: 'utf8mb4',
        synchronize: false,
        // 只用配置这个就好,不用配置 entities
        entityDir: path.resolve(__dirname, '../app/entity'),
      },
    ],
  };
  // 或者多连接
  config.typeorm = {
    databases: [
      {
        name: 'default',
        type: 'mysql',
        logging: false,
        host: 'localhost',
        port: 3306,
        username: 'xxx',
        password: 'xxx',
        database: 'test',
        charset: 'utf8mb4',
        synchronize: false,
        entityDir: path.resolve(__dirname, '../app/entity/default'),
      },
      {
        name: 'db2', // 多连接名字要不同
        type: 'mysql',
        logging: false,
        host: 'x.x.x.x',
        port: 3306,
        username: 'xxx',
        password: 'xxx',
        database: 'test',
        charset: 'utf8mb4',
        synchronize: false,
        entityDir: path.resolve(__dirname, '../app/entity/db2'),
      },
    ],
  };

  return config;
};

创建实体

├── service
│   └── user.ts
├─  entity
    └─User.ts

实体文件

// app/entity/User.ts
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'

// 注意:这里必须要以 default 导出, 否则插件无法查找到定义的类文件
@Entity()
export default class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({
    comment: '创建类型,0-人工,1-自动',
    default: 0,
  })
  create_type: number;
}

使用查找

export default class UserService extends Service {
  public async index() {
    const { ctx } = this;
    // 单数据库
    // app/entity/sys/user.ts => ctx.orm.sys.User
    // app/entity/user.ts => ctx.orm.User
    // app/entity/admin/sys/user_role.ys => ctx.orm.admin.sys.UserRole
    // 多数据库 例如获取db1
    // ctx.orm['db1'].user,转换方式同上
    return ctx.orm.User.find();
  }
}

框架内置Context扩展

获取getConnection

this.ctx.ormConnection || this.ctx.getOrmConnection('connectionName')

获取getManager

this.ctx.ormManager || this.ctx.getOrmManager('connectionName')
0.1.1

2 years ago

0.1.0

2 years ago