在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. 运行项目

相关推荐
i***t9195 小时前
Linux下MySQL的简单使用
linux·mysql·adb
口嗨农民工8 小时前
3.2 mysql客户端和服务器的启动与停止
数据库·mysql
t***31659 小时前
Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql
sql·mysql·docker
小马爱打代码10 小时前
避坑指南:MySQL 迁移到 TiDB
数据库·mysql·tidb
q***577410 小时前
MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置
windows·mysql·adb
云计算老刘11 小时前
1.项目实战:LAMP-LNMP-分离部署
linux·mysql·php·apache·mariadb
8***848211 小时前
如何在Linux中找到MySQL的安装目录
linux·运维·mysql
W***832012 小时前
如何在 Ubuntu 22.04 上安装 MySQL
linux·mysql·ubuntu
7***q60813 小时前
在linux(Centos)中Mysql的端口修改保姆级教程
linux·mysql·centos
q***614113 小时前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql