@elt_common/egg_typeorm
v0.1.1
Published
TypeORM plugin for Egg.js
Downloads
3
Readme
@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
// 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')