NestJs MongoDB Insert Records Single or Multiple


NestJS के साथ MongoDB को use करते हुए single और multiple records insert करना काफी आसान है, और हम Mongoose का use करते हैं जो MongoDB के लिए एक powerful Object Data Modeling (ODM) library है।

Insert operations में हम या तो एक document को insert करते हैं, या फिर एक साथ multiple documents को insert करते हैं।

इस topic में हम NestJS के साथ MongoDB में single और multiple records को insert करने का detailed guide देखेंगे।

NestJs MongoDB Insert Example

पिछले topic में हमने already एक User entity बनाई थी , उसी को use में लेकर आगे के सभी examples देखेंगे।

अब हम UserService बनाते हैं जो MongoDB के साथ single record insert करेगा।

File : src/user/user.service.ts

import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { User } from './schemas/user.schema'; @Injectable() export class UserService { constructor(@InjectModel(User.name) private userModel: Model<User>) {} // Insert a single user async createUser(createUserDto: any): Promise<User> { const newUser = new this.userModel(createUserDto); return newUser.save(); // Document ko save kar ke MongoDB mein insert kar rahe hain } }

यहां

  • @InjectModel(User.name) का use करके हम User model को inject कर रहे हैं।

  • createUser() method के through एक नया user document insert किया जा रहा है by calling save() method.

Create UserController

अब हम UserController बनाएंगे जो POST request को handle करेगा और single user insert करेगा।

File : src/user/user.controller.ts

import { Controller, Post, Body } from '@nestjs/common'; import { UserService } from './user.service'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} // POST request to insert a single user @Post() async create(@Body() createUserDto: any) { return this.userService.createUser(createUserDto); } }

यहां

  • @Post() decorator का use करके POST request को handle किया गया है।

  • @Body() decorator का use करके request body को DTO के रूप में accept किया जा रहा है।

अब अगर हम API call करें POST /users पर, तो एक नया user MongoDB collection में insert हो जायेगा।

Example Request Body
{
  "name": "John Doe",
  "email": "john@example.com",
  "password": "password123"
}

NestJs MongoDB Insert Multiple Records 

अगर आपको multiple records एक साथ insert करने हूँ, तो आप Mongoose के insertMany() method का use कर सकते हैं। यह method एक array of objects को accept करता है और उन्हें एक ही बार में MongoDB में insert करता है।

File : src/user/user.service.ts

@Injectable() export class UserService { constructor(@InjectModel(User.name) private userModel: Model<User>) {} // Insert multiple users at once async createMultipleUsers(createUsersDto: any[]): Promise<User[]> { return this.userModel.insertMany(createUsersDto); // Multiple users ko ek saath insert kar rahe hain } }

अब आपको बस अपने controller से create होने वाले user के objects का array pass करना है।

उसके हम UserController में एक नया endpoint add करते हैं जो multiple records insert करेगा।

File : src/user/user.controller.ts

import { Controller, Post, Body } from '@nestjs/common'; import { UserService } from './user.service'; @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} // POST request to insert multiple users @Post('bulk') async createMultiple(@Body() createUsersDto: any[]) { return this.userService.createMultipleUsers(createUsersDto); } }

@Post('bulk') decorator का use करके एक नया endpoint /users/bulk create किया गया है जो multiple users को insert करेगा।

Example Request Body for Bulk Insert
[
  {
    "name": "Alice",
    "email": "alice@example.com",
    "password": "alicepass"
  },
  {
    "name": "Bob",
    "email": "bob@example.com",
    "password": "bobpass"
  }
]

NestJs Error Handling In Insert Operations

Error handling काफी जरूरी होती है जब आप records insert कर रहे होते हैं, specially जब unique constraints या required fields हो।

हम Mongoose validation और try-catch block का use करके errors को handle कर सकते हैं।

Location : src/user/user.service.ts

@Injectable() export class UserService { constructor(@InjectModel(User.name) private userModel: Model<User>) {} // Insert a single user with error handling async createUser(createUserDto: any): Promise<User> { try { const newUser = new this.userModel(createUserDto); return await newUser.save(); } catch (error) { // Handle duplicate email or validation error if (error.code === 11000) { // 11000 is MongoDB's error code for duplicate keys throw new Error('Email already exists'); } throw new Error('Failed to create user'); } } }

NestJs MongoDB Best Practices

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

  • Handle Duplicate Keys : MongoDB में unique constraints के लिए ensure करें कि आप duplicate keys (like email) handle कर रहे हैं, और proper error messages return करें।

  • Use insertMany() for Bulk Operations : जब आपको multiple records insert करने हूँ, तो insertMany() का use करें ताकि batch insertions efficiently handle हों ।

  • Ensure Data Integrity : Insert operations में proper validation और sanitization का ध्यान रखें ताकि आपका data consistent और secure रहे।

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