Mikro-ORM 开源项目教程
项目的目录结构及介绍
Mikro-ORM 是一个基于 TypeScript 的 Node.js ORM,支持多种数据库。项目的目录结构通常如下:
mikro-orm/
├── src/
│ ├── entities/ # 实体类定义
│ ├── migrations/ # 数据库迁移文件
│ ├── config/ # 配置文件
│ ├── index.ts # 项目入口文件
│ └── ... # 其他辅助文件和模块
├── tests/ # 测试文件
├── package.json # 项目依赖和脚本
├── tsconfig.json # TypeScript 配置
└── mikro-orm.config.ts # Mikro-ORM 配置文件
目录结构介绍
src/entities/
: 存放实体类定义,每个实体对应数据库中的一张表。src/migrations/
: 存放数据库迁移文件,用于版本控制数据库结构。src/config/
: 存放项目的配置文件,如数据库连接配置等。src/index.ts
: 项目的入口文件,通常包含应用的初始化和启动逻辑。tests/
: 存放测试文件,用于单元测试和集成测试。package.json
: 定义项目的依赖包和脚本命令。tsconfig.json
: TypeScript 编译配置文件。mikro-orm.config.ts
: Mikro-ORM 的配置文件,包含数据库连接、实体路径等配置。
项目的启动文件介绍
项目的启动文件通常是 src/index.ts
,它负责初始化 Mikro-ORM 并启动应用。以下是一个简单的示例:
import { MikroORM, RequestContext } from '@mikro-orm/core';
import { EntityManager } from '@mikro-orm/mysql'; // 根据使用的数据库选择相应的包
import { SomeEntity } from './entities/SomeEntity';
import config from '../mikro-orm.config';
async function bootstrap() {
const orm = await MikroORM.init(config);
const em = orm.em as EntityManager;
// 创建一个简单的请求上下文
RequestContext.create(em, async () => {
const entity = em.create(SomeEntity, { name: 'Example' });
await em.persistAndFlush(entity);
console.log('Entity saved:', entity);
});
// 启动应用的其他逻辑
// ...
}
bootstrap();
启动文件介绍
MikroORM.init(config)
: 初始化 Mikro-ORM,传入配置文件。RequestContext.create(em, async () => { ... })
: 创建请求上下文,确保每个请求都有独立的 EntityManager。em.create(SomeEntity, { name: 'Example' })
: 创建实体实例。em.persistAndFlush(entity)
: 持久化并刷新实体到数据库。
项目的配置文件介绍
Mikro-ORM 的配置文件通常是 mikro-orm.config.ts
,它包含了数据库连接、实体路径等配置。以下是一个示例:
import { Options } from '@mikro-orm/core';
import { MySqlDriver } from '@mikro-orm/mysql'; // 根据使用的数据库选择相应的包
const config: Options = {
entities: ['./dist/entities'], // 实体类路径
dbName: 'myDatabase', // 数据库名称
type: 'mysql', // 数据库类型
user: 'root', // 数据库用户名
password: 'root', // 数据库密码
host: 'localhost', // 数据库主机
port: 3306, // 数据库端口
debug: true, // 开启调试模式
migrations: {
path: './dist/migrations', // 迁移文件路径
},
};
export default config;
配置文件介绍
entities
: 指定实体类的路径。dbName
: 数据库名称。type
: 数据库类型(如mysql
、postgresql
等)。user
和password
: 数据库用户名和密码。host
和port
: