NestJS में MySQL database के साथ TypeORM का use करते हुए आप easily records को update कर सकते हैं। Update operations CRUD (Create, Read, Update, Delete) का एक essential part हैं, जिसमे आप existing records को modify करते हैं।

इस topic में हम देखेंगे कि NestJS के साथ MySQL records को कैसे update करते हैं using TypeORM. हम example के साथ service, controller, और entity setup करेंगे और data को update करना सीखेंगे।

Update record in NestJs

पिछले topic में हमने एक User (table : users) entity बनाई थी , हम same entity को update करने का try करेंगे।

NestJS के साथ MySQL में record update करने के लिए, आप TypeORM Repository का use करते हैं जो CRUD operations को handle करता है। अब हम UserService और UserController को update functionality के साथ setup करेंगे।

NestJS CLI का use करके UserService और UserController generate करें -

nest g service user nest g controller user

UserService में हम एक method लिखते हैं जो user record को update करेगा।

Location : src/user/user.service.ts

import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { User } from './user.entity'; @Injectable() export class UserService { constructor( @InjectRepository(User) private userRepository: Repository<User>, ) {} async update(id: number, userData: Partial<User>): Promise<User> { await this.userRepository.update(id, userData); // Update user record return this.userRepository.findOneBy({ id }); // Return updated user } }

यहां -

  • userRepository.update() का use user record को update करने के लिए किया गया है।

  • userRepository.findOneBy() से updated user record को return किया गया है।

Step 2 : Create Controller

अब हम UserController में endpoint बनाते हैं जो update request को handle करेगा।

Location : src/user/user.controller.ts

import { Controller, Put, Param, Body } from '@nestjs/common'; import { UserService } from './user.service'; import { User } from './user.entity'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} @Put(':id') updateUser(@Param('id') id: number, @Body() userData: Partial<User>): Promise<User> { return this.userService.update(id, userData); } }

यहां -

  • @Put() decorator update operations के लिए use होता है।

  • @Param('id') URL से id को extract करता है और @Body() request body को inject करता है जिसमे updated user data होता है।

Use DTO (Data Transfer Object)

DTOs का use करके आप incoming data को validate कर सकते हैं और ensure कर सकते हैं कि data का structure सही हो। इससे आप काफी errors को handle कर सकते हैं और data integrity maintain कर सकते हैं।

Location: src/user/dto/update-user.dto.ts

export class UpdateUserDto { readonly name?: string; readonly email?: string; readonly password?: string; }

यहां हमने optional fields define किये हैं, क्योंकि update के time हर field update होना जरूरी नहीं है।

अब UserController में DTO का use करते हैं।

Location : src/user/user.controller.ts

import { Controller, Put, Param, Body } from '@nestjs/common'; import { UserService } from './user.service'; import { UpdateUserDto } from './dto/update-user.dto'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} @Put(':id') updateUser(@Param('id') id: number, @Body() updateUserDto: UpdateUserDto): Promise<User> { return this.userService.update(id, updateUserDto); } }

यहां UpdateUserDto को request body के लिए type के रूप में use किया गया है।

NestJs MySQL Best Practice

  • Use DTOs for Data Validation : Always use DTOs तो define and validate थे structure of incoming data. यह ensure करता है कि user से जो data आ रहा है, वो valid है।

  • Handle Errors Properly : Update operations के दौरान error handling जरूरी है। जैसे अगर user exist नहीं करता, तो NotFoundException throw करें।

  • Use PartialType for DTO Inheritance : अगर आपको create और update के लिए similar DTOs चाहिए, तो PartialType का use करके code को reuse कर सकते हैं।

  • Avoid Direct Entity Exposure : Entities को directly expose न करें, बल्कि response के लिए DTOs या response objects का use करें।

  • Use Transactions for Complex Updates : अगर आपको multiple tables या complex updates perform करने हैं, तो transactions का use करें।

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook