likes
comments
collection
share

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

作者站长头像
站长
· 阅读数 25

引言

在现代Web应用中,数据的增删改查(CRUD)操作是最基本的功能之一。通过Nest.js与MongoDB的集成,我们可以高效地实现这些操作。本篇博客将详细介绍如何在Nest.js项目中使用MongoDB实现用户数据的增删改查操作,帮助你快速掌握这一重要技能。

通过依赖注入

在Nest.js中,我们可以通过依赖注入的方式将MongoDB的模型注入到服务中,进而实现数据操作。

users.service.ts

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { UsersDocument } from './schemas/user.schema';
import { CreateUserDto } from './dto/create-user.dto';

@Injectable()
export class UsersService {
  constructor(@InjectModel(Users.name) private usersModel: Model<UsersDocument>) {}

  async create(createUserDto: CreateUserDto) {
    return await this.usersModel.create(createUserDto);
  }
}

在users.module.ts中引入Schema

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { Users, UsersSchema } from './schemas/user.schema';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';

@Module({
  imports: [
    MongooseModule.forFeature([{ name: Users.name, schema: UsersSchema }]),
  ],
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}

user.controller.ts

import { Controller, Post, Body } from '@nestjs/common';
import { ApiTags, ApiOperation } from '@nestjs/swagger';
import { UsersService } from './users.service';
import { CreateUserDto } from './dto/create-user.dto';

@ApiTags('用户')
@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Post()
  @ApiOperation({ summary: '添加用户' })
  create(@Body() createUserDto: CreateUserDto) {
    return this.usersService.create(createUserDto);
  }
}

测试添加用户

启动Nest.js服务并通过Swagger界面测试添加用户功能。

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

查询所有用户

users.service.ts

@Injectable()
export class UsersService {
  constructor(@InjectModel(Users.name) private usersModel: Model<UsersDocument>) {}

  async findAll() {
    return await this.usersModel.find().exec();
  }
}

user.controller.ts

import { Controller, Get } from '@nestjs/common';

@ApiTags('用户')
@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get()
  findAll() {
    return this.usersService.findAll();
  }
}

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

根据用户ID查询

user.controller.ts

import { Controller, Get, Param } from '@nestjs/common';

@ApiTags('用户')
@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.usersService.findOne(id);
  }
}

users.service.ts

@Injectable()
export class UsersService {
  constructor(@InjectModel(Users.name) private usersModel: Model<UsersDocument>) {}

  async findOne(id: string) {
    return await this.usersModel.findById(id).exec();
  }
}

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

更新用户

user.controller.ts

import { Controller, Patch, Param, Body } from '@nestjs/common';
import { UpdateUserDto } from './dto/update-user.dto';

@ApiTags('用户')
@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Patch(':id')
  update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
    return this.usersService.update(id, updateUserDto);
  }
}

users.service.ts

@Injectable()
export class UsersService {
  constructor(@InjectModel(Users.name) private usersModel: Model<UsersDocument>) {}

  async update(id: string, updateUserDto: UpdateUserDto) {
    return await this.usersModel.findByIdAndUpdate(id, updateUserDto, { new: true }).exec();
  }
}

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

删除用户

user.controller.ts

import { Controller, Delete, Param } from '@nestjs/common';

@ApiTags('用户')
@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.usersService.remove(id);
  }
}

users.service.ts

@Injectable()
export class UsersService {
  constructor(@InjectModel(Users.name) private usersModel: Model<UsersDocument>) {}

  async remove(id: string) {
    return await this.usersModel.findByIdAndDelete(id).exec();
  }
}

深入掌握Nest.js与MongoDB的集成:实现用户增删改查操作在这篇博客中,我们详细介绍了如何在Nest.js项目中

总结

通过本篇内容,你已经学习了如何在Nest.js项目中集成MongoDB,并实现用户数据的增删改查操作。利用Nest.js的模块化设计和MongoDB的强大功能,可以帮助你构建高效、稳定的数据管理系统。这些操作是Web开发中的核心功能,掌握它们将为你的开发工作带来极大便利。

转载自:https://juejin.cn/post/7382898930524405810
评论
请登录