परिचय: TypeScript और डेटाबेस एक आदर्श जोड़ी क्यों हैं
\n\nआधुनिक वेब डेवलपमेंट डेटाबेस (DB) के साथ काम किए बिना अधूरा है। TypeScript, JavaScript पर एक सख्ती से टाइप की गई परत के रूप में, डेवलपर्स को विश्वसनीय और स्केलेबल एप्लिकेशन बनाने के लिए एक शक्तिशाली उपकरण प्रदान करता है। इस लेख में, हम व्यवहार में देखेंगे कि TypeScript इकोसिस्टम में दो सबसे लोकप्रिय डेटाबेस - रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB को कैसे कनेक्ट और उपयोग करें।
\n\nआप सीखेंगे कि ORM/ODM कैसे सेट करें, टाइप किए गए मॉडल कैसे लिखें और बुनियादी CRUD ऑपरेशन कैसे करें। यह सामग्री उन डेवलपर्स के लिए है जो पहले से TypeScript और Node.js की मूल बातों से परिचित हैं।
\n\n1. प्रोजेक्ट सेटअप और डिपेंडेंसी इंस्टॉलेशन
\n\nकोड लिखने से पहले, एक नया प्रोजेक्ट बनाएं और आवश्यक पैकेज इंस्टॉल करें। PostgreSQL के साथ काम करने के लिए हम TypeORM का उपयोग करेंगे - TypeScript के लिए सबसे लोकप्रिय ORM में से एक। MongoDB के लिए - Mongoose।
प्रोजेक्ट इनिशियलाइज़ेशन
\n\nmkdir typescript-db-practice\ncd typescript-db-practice\nnpm init -y\nnpm install typescript ts-node @types/node --save-dev\nnpx tsc --init\n\nPostgreSQL के लिए डिपेंडेंसी इंस्टॉलेशन
\n\nnpm install typeorm reflect-metadata pg\nnpm install @types/node --save-dev\n\nMongoDB के लिए डिपेंडेंसी इंस्टॉलेशन
\n\nnpm install mongoose\nnpm install @types/mongoose --save-dev\n\nइंस्टॉलेशन के बाद, tsconfig.json फ़ाइल में "experimentalDecorators": true और "emitDecoratorMetadata": true विकल्पों को सक्षम करना सुनिश्चित करें - वे TypeORM के काम करने के लिए आवश्यक हैं।
2. TypeORM के माध्यम से PostgreSQL के साथ काम करना
\n\nTypeORM Active Record और Data Mapper दोनों पैटर्न का समर्थन करता है। हम Data Mapper पर ध्यान केंद्रित करेंगे, क्योंकि यह अधिक लचीलापन प्रदान करता है और स्वच्छ आर्किटेक्चर के साथ बेहतर रूप से मेल खाता है।
\n\nएंटिटी (Entity) बनाना
\n\nएक उपयोगकर्ता मॉडल बनाएं। प्रत्येक एंटिटी एक क्लास है जिसे विशेष एनोटेशन से सजाया गया है।
\n\n// src/entities/User.ts\nimport { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';\n\n@Entity()\nexport class User {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ length: 100 })\n name: string;\n\n @Column({ unique: true })\n email: string;\n\n @Column({ select: false })\n password: string;\n\n @CreateDateColumn()\n createdAt: Date;\n}\n\nकनेक्शन और रिपॉजिटरी सेटअप
\n\nडेटाबेस इनिशियलाइज़ेशन और उपयोगकर्ताओं के साथ काम करने के लिए रिपॉजिटरी के लिए एक फ़ाइल बनाएं।
\n\n// src/data-source.ts\nimport "reflect-metadata";\nimport { DataSource } from "typeorm";\nimport { User } from "./entities/User";\n\nexport const AppDataSource = new DataSource({\n type: "postgres",\n host: "localhost",\n port: 5432,\n username: "postgres",\n password: "password",\n database: "test_db",\n synchronize: true, // ऑटो-टेबल निर्माण (केवल डेवलपमेंट के लिए!)\n logging: false,\n entities: [User],\n migrations: [],\n subscribers: [],\n});\n\n// src/repositories/userRepository.ts\nimport { AppDataSource } from "../data-source";\nimport { User } from "../entities/User";\n\nexport const userRepository = AppDataSource.getRepository(User);\n\nव्यवहार में CRUD ऑपरेशन
\n\n// src/index.ts\nimport { AppDataSource } from "./data-source";\nimport { userRepository } from "./repositories/userRepository";\n\nasync function main() {\n await AppDataSource.initialize();\n console.log("PostgreSQL connected!");\n\n // CREATE\n const newUser = userRepository.create({\n name: "इवान पेट्रोव",\n email: "ivan@example.com",\n password: "hashed_password"\n });\n await userRepository.save(newUser);\n console.log("User created:", newUser);\n\n // READ\n const us