前端工程师梭哈初体验(基于Nest.js写服务端代码,发送一个POST请求以及连接mysql)

47 阅读2分钟

image.png

往期链接

1、发送一个POST请求,返回 “这是一个POST请求,成功示例”

app.service.ts文件新增一个函数 postHello

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello NestJS!';
  }
  postHello():string {
    return '这是一个POST请求,成功示例'
  }
}

app.controller.ts文件新增以下代码

//引入Post 装饰器
import { Controller, Get,Post } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
  
  //处理Post请求处理函数
  @Post()
  postHello(): string{
    return this.appService.postHello();
  } 
}

接着使用postman 发送 POST 请求你就可以看到以下结果

image.png

2、连接mysql

这里跳过安装mysql的部分

  1. 安装 TypeORM 和 MySQL 驱动程序:
npm install typeorm @nestjs/typeorm mysql2
  1. 在 app.module.ts 文件中导入 TypeORM 模块:
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './user.entity';
@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql', // 数据库类型
      host: 'localhost', // 数据库的连接地址host
      port: 3306, // 数据库的端口 3306
      username: 'root', // 连接账号
      password: '12345678', // 连接密码
      database: 'test', // 连接的库名
      retryDelay: 500, // 重试连接数据库间隔
      retryAttempts: 10, // 允许重连次数
      synchronize: true, // 是否将实体同步到数据库
      autoLoadEntities: true, // 自动加载实体配置,forFeature()注册的每个实体都自己动加载
    }),
    TypeOrmModule.forFeature([User]),
  ],
  controllers: [],
  providers: [],
})
export class AppModule {}


3、新建实体文件user.entity.ts 添加以下代码。

import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  CreateDateColumn,
} from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  sign: string;

  @Column()
  account: string;

  @Column()
  password: string;

  @CreateDateColumn()
  createTime?: Date;
  
  @CreateDateColumn()
  loginTime?: Date;
}
// 含义 创建一个 user 表,字段包含 id,name,sign,等等。

4、查询数据库中的数据。 在app.service.ts 文件中添加以下代码

import { Injectable, HttpStatus, BadRequestException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from '../../entity/user.entity';
@Injectable()
export class AppService {
  constructor(
    @InjectRepository(User)
    private readonly userList: Repository<User>,
  ) {}
  
   getHello(): string {
     return 'Hello NestJS!';
   }
   postHello():string {
     return '这是一个POST请求,成功示例'
   }
  //查询所有用户
  async findUserAll(): Promise<any> {
    const userList = await this.userList.find();
    return userList;
  }
}

5、修改 app.controller.ts 代码如下

//引入Post 装饰器
import { Controller, Get,Post } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): any {
    return this.appService.findUserAll();
  }
  
  //处理Post请求处理函数
  @Post()
  postHello(): string{
    return this.appService.postHello();
  } 
}

结尾:今天我们处理了一个POST请求,以及连接mysql,后面再详细更新如何一步步实现一个简单官网Demo的服务端所需代码。

也可以登录GitHub查看官网Demo源码