If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
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 करना सीखेंगे।
●●●
पिछले 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 किया गया है।
●●●
अब हम 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 होता है।
●●●
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 किया गया है।
●●●
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 करें।