安装相关依赖
1 2 3
| yarn global add @nestjs/cli nest new mydblog-server --strict && cd mydblog-server yarn add typeorm @nestjs/typeorm mysql
|
配置数据源
src/config/Database.ts
1 2 3 4 5 6 7 8 9 10 11 12 13
| import { TypeOrmModuleOptions } from '@nestjs/typeorm';
export const AppDataSource: TypeOrmModuleOptions = { type: 'mysql', host: '数据库IP', port: 数据库端口号, username: '用户名', password: '密码', database: '待连接的数据库', synchronize: true, logging: true, autoLoadEntities: true, };
|
src/app.module.ts
1 2 3 4 5 6 7 8 9 10 11 12
| import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AppDataSource } from './config/Database';
@Module({ imports: [TypeOrmModule.forRoot(AppDataSource)], controllers: [AppController], providers: [AppService], }) export class AppModule {}
|
新建CRUD模块
TypeORM中对于Entity的定义
1 2 3
| nest g res user //res后跟的是模块名 - REST API - Y
|
src/user/entities/user.entity.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"
@Entity() export class User { @PrimaryGeneratedColumn() id: number
@Column({ length: 100, }) name: string
@Column("text") address: string
@Column() nickname: string
@Column("double") stature: number }
|
src/user/user.module.ts
1 2 3 4 5 6 7 8 9 10 11 12
| import { Module } from '@nestjs/common'; import { UserService } from './user.service'; import { UserController } from './user.controller'; import { TypeOrmModule } from "@nestjs/typeorm"; import { User } from "./entities/user.entity";
@Module({ imports: [TypeOrmModule.forFeature([User])], controllers: [UserController], providers: [UserService] }) export class UserModule {}
|
src/user/dto/create-user.dto.ts
1 2 3 4 5
| export class CreateUserDto { name: string; nickname: string; address: string; }
|
src/user/user.service.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import { Injectable } from '@nestjs/common'; import { CreateUserDto } from './dto/create-user.dto'; import { UpdateUserDto } from './dto/update-user.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; import { Repository } from 'typeorm';
@Injectable() export class UserService { constructor( @InjectRepository(User) private userRepository: Repository<User>, ) {}
async create(createUserDto: CreateUserDto) { createUserDto.address = '野兽邸'; return await this.userRepository.save(createUserDto); }
async findAll() { return await this.userRepository.find(); }
async findOne(id: number) { return await this.userRepository.findOneBy({ id }); }
async update(id: number, updateUserDto: UpdateUserDto) { return `This action updates a #${id} user`; }
async remove(id: number) { return await this.userRepository.delete(id); } }
|
用Postman测试一下,成功!