Mysql
以下以连接Mysql数据为例子,技术选型为NestJS + Mysql + TypeOrm
安装
安装依赖
sql
pnpm add @nestjs/typeorm typeorm mysql2
导入TypeOrmModule
php
// app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TestModule } from './module/test/test.module';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'root123', // 替换为你自己的密码
database: 'test_egg', // 替换为你创建的数据库名
entities: [__dirname + '/**/*.entity{.ts,.js}'],
synchronize: true, // 开发环境可开启,生产环境务必关闭!
retryDelay: 500,
retryAttempts: 10,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
参数介绍:
arduino
// 指定实体文件路径,`TypeORM `会自动加载这些类作为数据模型
entities
// 仅限开发环境!它会根据实体自动创建/修改表结构,非常方便
// 但上线后必须设为false,否则可能误删表;
synchronize: true:
// 网络抖动时重试策略,避免启动失败
retryDelay 和 retryAttempts
创建实体与服务
新建src/module/test/test.entity.ts
kotlin
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class Test {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
在test.module.ts中引入实体
typescript
import { Module } from '@nestjs/common';
// 引入
import { TypeOrmModule } from '@nestjs/typeorm';
import { TestController } from './test.controller';
import { TestService } from './test.service';
// 引入实体
import { TestEntity } from './test.entity';
@Module({
// 引入
imports: [TypeOrmModule.forFeature([TestEntity])],
controllers: [TestController],
providers: [TestService],
})
export class TestModule {}
在test.service.ts简单应用
typescript
import { Injectable } from '@nestjs/common';
// 引入
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
// 引入
import { TestEntity } from './test.entity';
@Injectable()
export class TestService {
constructor(
// 注入
@InjectRepository(TestEntity)
private readonly testRepository: Repository<TestEntity>,
) {}
async getHello(): Promise<string> {
// 使用
return this.testRepository
.find()
.then((res) => res.map((item) => item.name).join(','));
}
}