1.安装nestJS
npm install -g @nestjs/cli
nest -v //查看nest版本,是否安装成功
2.创建项目
nest new <name> //创建项目
3.运用命令创建接口文件
// 新建用户module
nest g mo user /modules/user //user(接口路由名)
// 新建用户controller
nest g co user /modules/user
// 新建用户service
nest g s user /modules/user
4.创建get接口()
(1)修改user.controller.ts 内代码
import { Controller, Get, Param } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('user')
export class UserController {
constructor(private readonly appService: UserService) {}
@Get(':userId')//接受路由参数 userId
getUserById(@Param('userId') userId: string) {
return this.appService.getUserById(userId);//调用 user.service.ts 中的getUserById
}
}
(2)修改user.service.ts中代码
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
getUserById(userId: string) {
return `当前用户的ID为${userId}`;
}
}
(3)一键生成crud模块
nest g resource 模块名
5.链接mysql
(1)安装mysql2
npm install --save @nestjs/typeorm typeorm mysql2
(2)数据库连接
1.在app.module.ts 中引入TypeOrmModule
import { TypeOrmModule } from '@nestjs/typeorm';
2.在imports中加入链接代码
TypeOrmModule.forRoot({
type: 'mysql',//数据库类型
host: 'localhost',//主机名
port: 3306,//端口号
username: 'root',//账号
password: 'password',//密码
database: 'yun',//数据名
entities: [__dirname + '/**/*.entity{.ts,.js}'],//实体类
autoLoadEntities: true, // 自动链接被 forFeature 注册的实体
synchronize: true, // 实体与表同步 调试模式下开始。不然会有强替换导致数据丢是
}),
3.在对应路由模块中 (模块名.module.ts)的imports中 引入实体类
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entities/user.entity';//引入实体类
@Module({
imports: [TypeOrmModule.forFeature([User])],//将实体类链接
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
执行有注释操作的两行即可,同时,执行这操作前,需先在对应目录下创建对应的实体类文件(实体类名.entity.ts),实体类的创建见下一阶段
4.实体类的创建(以User类代码为例)
//先创建文件 user.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()//主键
id: string;
@Column()
userName: string;
@Column()
userNickname: string;
@Column()
roleSign: number;
@Column()
department: string;
@Column()
phone: string;
@Column()
email: string;
@Column()
sex: number;
@Column()
password: string;
@Column()
overdueTime: Date;
@Column()
describe: number;
@Column()
status: Boolean;
@Column()
createTime: Date;
}
6.重启项目即可,数据库内如未创建 对应表会自动进行生成
7.修改dto文件中的creater-dto中创建映射类
Comments NOTHING