nestJS

发布于 2024-03-18  174 次阅读


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中创建映射类

一个练习时长还差一年半的切图仔,有需求可联系 QQ:963827384
最后更新于 2024-03-18