Nestjs
连接数据库操作。为了与 SQL
和 NoSQL
数据库集成,Nest
提供了 @nestjs/typeorm
包。Nest
使用 TypeORM
是因为它是 TypeScript
中最成熟的对象关系映射器( ORM
)。因为它是用 TypeScript 编写的,所以可以很好地与 Nest
框架集成。
安装
npm install --save @nestjs/typeorm typeorm mysql2
使用
需要在 app.module.ts
下引入,参考教程:数据库连接
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common'
import { AppController } from './app.controller'
import { AppService } from './app.service'
import { ConfigModule } from '@nestjs/config'
import { TypeOrmModule } from '@nestjs/typeorm'
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'root',
database: 'datdbase',
// 如果设置了 autoLoadEntities: true,这里就不需要再设置 entities
entities: [__dirname + '/**/*.entity{.ts,.js}'],
// 代表是否自动将实体同步到数据库
// 注意:设置 synchronize: true 不能被用于生产环境,否则您可能会丢失生产环境数据
synchronize: false,
// 自动加载实体, forFeature() 方法不再需要传入实体数组
autoLoadEntities: false,
// 自动运行迁移,默认值为 false
migrationsRun: false
})
],
controllers: [AppController],
providers: [AppService]
})
export class AppModule {}
在控制器中使用 user.controller.ts
``import { Controller, Get, Body, Post } from '@nestjs/common'
import { UserService } from './user.service'
@Controller('user')
export class UserController {
constructor(private userService: UserService) {}
@Post('add')
create(@Body() body) {
return this.userService.create(body)
}
}
user.service.ts
import { Injectable } from '@nestjs/common'
import { InjectRepository } from '@nestjs/typeorm'
import { Repository } from 'typeorm'
import { User } from '../entity/user.entity'
@Injectable()
export class UserService {
constructor(@InjectRepository(User) private readonly user: Repository<User>) {}
create(body: any) {
const { id, name, password, email, phone, isShow } = body
const user = new User()
user.id = id
user.name = name
user.password = password
user.email = email
user.phone = phone
user.isShow = isShow
return this.user.save(user) // 保存到数据库中
}
}
更多 typeorm
语法请看:typeorm中文文档