NestJs MySQL Insert Example : Use DTOs To Insert Record


NestJS में MySQL database के साथ TypeORM का use करते hue आप easily records insert कर सकते हैं। TypeORM, जो कि एक Object Relational Mapper (ORM) है, आपको relational databases (like MySQL) के साथ काम करने का simple और efficient तरीका provide करता है।

इसमें आप SQL queries लिखने के बजाय entities से data insert, update, और retrieve कर सकते हैं।

इस topic में हम step-by-step देखेंगे कैसे NestJS के साथ MySQL का connection establish करते हैं और records को insert करते हैं using TypeORM.

Nestjs create entity to define table

NestJS में entities को use करके database के tables को define किया जाता है , हर entity एक class होती है जो MySQL table के columns को represent करती है।

चलिए एक User entity बनाते हैं जो MySQL database में users table को represent करेगी।

File : src/user/user.entity.ts

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User { @PrimaryGeneratedColumn() id: number; @Column() name: string; @Column({ unique: true }) email: string; @Column() password: string; }

यहां

  • @Entity() decorator का use करके User class को MySQL table से map किया गया है।

  • @PrimaryGeneratedColumn() से auto-increment primary key define कि गयी है।

  • @Column() से table के columns define किये गए हैं।

NestJs MySQL Insert Example

NestJS में TypeORM Repository का use करके आप database में records insert कर सकते हैं। TypeORM repositories को inject करके आप CRUD (Create, Read, Update, Delete) operations easily perform कर सकते हैं।

Step 2 : Create User Service for Insert Operation

NestJS CLI का use करके UserService और UserController बनाएं -

nest g service user
nest g controller user

अब हम UserService में record insert करने का method लिखते हैं।

File : 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 create(userData: Partial<User>): Promise<User> { const newUser = this.userRepository.create(userData); // Create new user entity return this.userRepository.save(newUser); // Save user to the database } }

यहां

  • userRepository.create() का use एक नया user entity create करने के लिए होता है।

  • userRepository.save() का use उस entity को database में save करने के लिए होता है।

Step 3 : Create Controller

अब हम UserController में endpoint बनाते हैं जो user data को POST request के through insert करेगा।

File : src/user/user.controller.ts

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

यहां

  • @Post() decorator POST request handle करता है।

  • @Body() decorator request body को inject करता है जो user data होता है।

  • createUser() method service के create() method को call करता है और user को database में insert करता है।

Use DTOs (Data Transfer Objects) In NestJS

NestJS में DTOs का use करके आप data को validate और sanitize कर सकते हैं। DTOs basically classes होती हैं जो input data structure को define करती हैं।

Create DTO In NestJs

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

export class CreateUserDto { readonly name: string; readonly email: string; readonly password: string; }

अब UserController में DTO का use करते हैं ताकि incoming data को validate कर सकें।

Location : src/user/user.controller.ts

import { Controller, Post, Body } from '@nestjs/common'; import { UserService } from './user.service'; import { CreateUserDto } from './dto/create-user.dto'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} @Post() createUser(@Body() createUserDto: CreateUserDto): Promise<User> { return this.userService.create(createUserDto); } }

यहां CreateUserDto को request body के लिए type के रूप में use किया गया है, जिससे data का structure define होता है।

NestJs MySQL Best Practices

  • Use DTOs for Data Validation : हमेशा incoming data का structure define और validate करने के लिए DTOs का use करें, ये data integrity maintain करने में help करता है।

  • Handle Errors Properly : जब database में records insert कर रहे हो, तो error handling लगाएं . For example, अगर email field unique है और duplicate data आ रहा है, तो handle करें।

  • Use Migrations for Schema Changes : Development के लिए synchronize : true ठीक है, लेकिन production में आप migrations का use करें ताकि schema changes को safely implement किया जा सके।

  • Separate Concerns : Business logic को services में रखने कि habit डालें , और controllers को सिर्फ request/response handling के लिए 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