nestJS接口增删改查数据库初次学习过程

495 阅读2分钟

三、nestJS接口增删改查数据库初次学习过程

1.增

  • user.controller.ts文件

import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';

interface UserResponse<T = unknown> {
  code: number;
  data?: T;
  message: string;
}

@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Post('addUser')
  create(@Body() createUserDto: CreateUserDto) {
    return this.userService.create(createUserDto);
  }
}
  • user.service.ts文件

import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private readonly usersRepository: Repository<User>,
  ) {}
  async create(CreateUserDto: CreateUserDto) {
    try {
      await this.usersRepository.save(CreateUserDto);
      return {
        code: 200,
        message: 'Success',
      };
    } catch (e) {
      return {
        code: 400,
        message: e,
      };
    }
  }
}
  • postman中查询接口,打开数据库已经添加了一条记录
Xnip2022-09-24_15-19-41.jpg

Xnip2022-09-24_15-19-35.jpg

2.删

  • user.controller.ts文件

import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';

interface UserResponse<T = unknown> {
  code: number;
  data?: T;
  message: string;
}

@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}
  @Delete('/deleteId/:id')
  remove(@Param('id') id: string) {
    return this.userService.remove(+id);
  }
}
  • user.service.ts文件
import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private readonly usersRepository: Repository<User>,
  ) {}
  async remove(id: number) {
    try {
      await this.usersRepository.delete(id);
      return {
        code: 200,
        data: id,
        message: 'Success',
      };
    } catch (e) {
      return {
        code: 400,
        message: e,
      };
    }
  }
}
  • postman中查询删除接口,打开数据库已经删掉了一条id=1的记录

Xnip2022-09-24_14-20-39.jpg

Xnip2022-09-24_14-20-46.jpg

3.改

  • user.controller.ts文件

import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';

interface UserResponse<T = unknown> {
  code: number;
  data?: T;
  message: string;
}

@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}
  @Patch('/updateId/:id')
  update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
    return this.userService.updateUser(+id, updateUserDto);
  }
}

  • user.service.ts文件

import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private readonly usersRepository: Repository<User>,
  ) {}

  async updateUser(id: number, updateUserDto: UpdateUserDto) {
    try {
      await this.usersRepository.update(id, { ...updateUserDto });
      return {
        code: 200,
        message: 'Success',
      };
    } catch (e) {
      return {
        code: 400,
        message: e,
      };
    }
  }
}

Xnip2022-09-24_16-09-06.jpg

Xnip2022-09-24_16-08-58.jpg

4.查(查询所有用户列表)

  • user.controller.ts文件通过调用user.userService里面的findAll方法返回从 数据库调用的数据

import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
} from '@nestjs/common';
import { UserService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';

interface UserResponse<T = unknown> {
  code: number;
  data?: T;
  message: string;
}

@Controller('user')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get('all')
  async findAll(): Promise<UserResponse> {
    return {
      code: 200,
      data: await this.userService.findAll(),
      message: 'Success',
    };
  }
}
  • user.service.ts文件查一下TypeORM中文文档 userRepository调用find()方法查找到所有的用户数据

import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { User } from './entities/user.entity';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private readonly usersRepository: Repository<User>,
  ) {}
  create(createUserDto: CreateUserDto) {
    return 'This action adds a new user';
  }
  // 查找所有用户
  async findAll(): Promise<User[]> {
    return await this.usersRepository.find();
  }
}
  • 在浏览器中输入http://localhost:3000/react-ant-admin/user/all 可查询到我们插入的所有用户表 /react-ant-admin 是我们设置的统一的接口前缀
Xnip2022-09-24_13-58-30.jpg