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 के साथ 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 देखेंगे।
●●●
पिछले 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.
अब हम 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 हो जायेगा।
{ "name": "John Doe", "email": "john@example.com", "password": "password123" }
●●●
अगर आपको 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 करेगा।
[ { "name": "Alice", "email": "alice@example.com", "password": "alicepass" }, { "name": "Bob", "email": "bob@example.com", "password": "bobpass" } ]
●●●
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');
}
}
}
●●●
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 रहे।