santisify Site

Back

ORM configuration(后续更新)Blur image

nestjs + Mikro-ORM(v7)#

当然首先是来安装

Installation#

pnpm add @mikro-orm/core @mikro-orm/nestjs @mikro-orm/mysql @mikro-orm/reflection
pnpm add tsx dotenv @mikro-orm/cli -D
bash

CLI Configuration#

.env.example

MIKRO_ORM_HOST=localhost
MIKRO_ORM_PORT=3306
MIKRO_ORM_USER=root
MIKRO_ORM_PASSWORD=123456
MIKRO_ORM_DB_NAME=demo
plaintext

mikro-orm.config.ts || src/mikro-orm.config.ts

Test CLI#

npx mikro-orm debug
bash

执行上述命令后会出现一些相关信息:

Database linkage#

在对应的entity文件中添加装饰器(主键:@PrimaryKey(), 其他:@Property()),可自动对字段进行类型推断,当然也可以自己设置(@Property({type:'text'})),例如:

以下代码为mikro-orm创建迁移计划,并非修改数据库.

npx mikro-orm migration:create
bash

执行后你会得到一个全新的文件夹:

./src/migrations/
├── Migration20260423123341.ts
└── .snapshot-nestdemo.json
plaintext

其中文件Migration20260423123341.ts, 数据库也会有相关的文件名记录,内容如下:

import { Migration } from '@mikro-orm/migrations';

export class Migration20260423123341 extends Migration {
  override up(): void | Promise<void> {
    this.addSql(
      `create table \`user\` (\`id\` int unsigned not null auto_increment primary key, \`username\` varchar(255) not null, \`email\` varchar(255) not null, \`password\` varchar(255) not null) default character set utf8mb4 engine = InnoDB;`,
    );
  }

  override down(): void | Promise<void> {
    this.addSql(`drop table if exists \`user\`;`);
  }
}
ts

TIPS:必记命令

npx mikro-orm migration:up  //迁移到最新版本,对应上方up函数
npx mikro-orm migration:down  //回退一个版本对应上方down函数
bash
ORM configuration(后续更新)
https://santisify.top/blog/other/orm
Author santisify
Published at April 29, 2026
Comment seems to stuck. Try to refresh?✨