在Nestjs使用mysql和typeorm

1. 创建项目

bash 复制代码
nest new nest-mysql-test

2. 添加config

安装 @nestjs/config 包

bash 复制代码
pnpm i --save @nestjs/config

添加 .env 文件

DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_USERNAME=root
DATABASE_PASSWORD=123456
DATABASE_DB=dbtest

创建 config/database.config.ts 文件

javascript 复制代码
import { registerAs } from '@nestjs/config';

export default registerAs('database', () => ({
  type: process.env.DATABASE_TYPE || 'mysql',
  host: process.env.DATABASE_HOST || 'localhost',
  port: parseInt(process.env.DATABASE_PORT, 10) || 3306,
  username: process.env.DATABASE_USERNAME,
  password: process.env.DATABASE_PASSWORD,
  database: process.env.DATABASE_DB,
}));

添加 common 模块

bash 复制代码
nest g module common

修改 common.module.ts

javascript 复制代码
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import databseConfig from 'src/config/databse.config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [databseConfig],
    }),
  ],
})
export class CommonModule {}

3. 添加typeorm

安装依赖包

bash 复制代码
pnpm install --save @nestjs/typeorm typeorm mysql2

修改 common.module.ts

javascript 复制代码
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import databseConfig from 'src/config/databse.config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      load: [databseConfig],
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (configService: ConfigService) => ({
        ...configService.get('database'),
        entities: [],
        autoLoadEntities: true,
        synchronize: true,
      }),
    }),
  ],
})
export class CommonModule {}

4. 添加实体

创建 entity/user.entity.ts 文件

javascript 复制代码
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column({ default: true })
  isActive: boolean;
}

在 common 模块中引入 user 实体

javascript 复制代码
import { User } from '../entity/user.entity';

@Module({
  imports: [
    ...
    TypeOrmModule.forRootAsync({
      ...
      useFactory: (configService: ConfigService) => ({
        ...
        entities: [User],
      }),
    }),
  ],
})
export class CommonModule {}

5. 运行项目

相关推荐
知初~3 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
子非衣4 小时前
MySQL修改JSON格式数据示例
android·mysql·json
钊兵5 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动
隔壁老王1567 小时前
mysql实时同步到es
数据库·mysql·elasticsearch
Hanson Huang10 小时前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
LUCIAZZZ10 小时前
EasyExcel快速入门
java·数据库·后端·mysql·spring·spring cloud·easyexcel
yuanbenshidiaos10 小时前
【正则表达式】
数据库·mysql·正则表达式
雾里看山13 小时前
【MySQL】内置函数
android·数据库·mysql
geovindu13 小时前
python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
python·mysql·ubuntu