जावास्क्रिप्ट (Node.js) के लिए ORM: तुलना और उदाहरण
\n\nNode.js पर सर्वर-साइड विकास करते समय, डेटाबेस के साथ इंटरैक्शन का प्रश्न जल्द या बाद में उठता है। शुद्ध SQL क्वेरी लिखना एक समय लेने वाला और त्रुटि-प्रवण कार्य है। ORM (Object-Relational Mapping) लाइब्रेरीज़ बचाव में आती हैं, जो डेटाबेस तालिकाओं के साथ सामान्य जावास्क्रिप्ट ऑब्जेक्ट की तरह काम करने की अनुमति देती हैं। इस लेख में, हम Node.js के लिए तीन सबसे लोकप्रिय ORM: Sequelize, TypeORM और Prisma की तुलना करेंगे, और स्पष्ट कोड उदाहरण प्रदान करेंगे।
\n\n1. Sequelize
\nSequelize Node.js के लिए सबसे पुराने और सबसे परिपक्व ORM में से एक है। यह PostgreSQL, MySQL, MariaDB, SQLite और Microsoft SQL Server का समर्थन करता है। Sequelize मॉडल और प्रॉमिस (या async/await) के साथ क्लासिक दृष्टिकोण का उपयोग करता है।
\n\nस्थापना
\nnpm install sequelize pg pg-hstore\n\nउदाहरण: मॉडल परिभाषा और क्वेरी
\nconst { Sequelize, DataTypes } = require('sequelize');\nconst sequelize = new Sequelize('database', 'user', 'password', {\n host: 'localhost',\n dialect: 'postgres'\n});\n\nconst User = sequelize.define('User', {\n name: { type: DataTypes.STRING, allowNull: false },\n email: { type: DataTypes.STRING, unique: true }\n});\n\nasync function createUser() {\n await sequelize.sync();\n const user = await User.create({ name: 'इवान', email: 'ivan@example.com' });\n console.log(user.toJSON());\n}\ncreateUser();\n\nSequelize की विशेषताएं
\n- \n
- परिपक्वता और बड़ा समुदाय। \n
- लेन-देन, माइग्रेशन और सीड-डेटा का समर्थन। \n
- लचीली एसोसिएशन प्रणाली (hasOne, hasMany, belongsToMany)। \n
- कमी: कभी-कभी भारी सिंटैक्स और जटिल डिबगिंग। \n
2. TypeORM
\nTypeORM एक ORM है जो जावास्क्रिप्ट और TypeScript दोनों के साथ काम कर सकता है। यह Sequelize के समान DBMS का समर्थन करता है, और दो दृष्टिकोण प्रदान करता है: Active Record और Data Mapper। TypeORM सक्रिय रूप से डेकोरेटर का भी उपयोग करता है, जो कोड को अधिक घोषणात्मक बनाता है।
\n\nस्थापना
\nnpm install typeorm reflect-metadata pg\n\nउदाहरण: डेकोरेटर के साथ मॉडल और क्वेरी
\nimport { Entity, PrimaryGeneratedColumn, Column, createConnection } from 'typeorm';\n\n@Entity()\nclass User {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column()\n name: string;\n\n @Column({ unique: true })\n email: string;\n}\n\nasync function createUser() {\n const connection = await createConnection({\n type: 'postgres',\n host: 'localhost',\n database: 'test',\n entities: [User],\n synchronize: true\n });\n const user = new User();\n user.name = 'मारिया';\n user.email = 'maria@example.com';\n await connection.manager.save(user);\n console.log(user);\n}\ncreateUser();\n\nTypeORM की विशेषताएं
\n- \n
- TypeScript और डेकोरेटर के साथ उत्कृष्ट एकीकरण। \n
- लचीलापन: Active Record और Data Mapper के बीच चयन। \n
- माइग्रेशन, इवेंट सब्सक्राइबर और लॉगिंग का समर्थन। \n
- कमी: दस्तावेज़ीकरण कभी-कभी अधूरा, बार-बार breaking changes। \n
3. Prisma
\nPrisma एक आधुनिक ORM है जो अपने पूर्ववर्तियों से मौलिक रूप से भिन्न है। कोड में मॉडल के बजाय, आप एक विशेष फ़ाइल schema.prisma में डेटा स्कीमा का वर्णन करते हैं, और Prisma एक टाइप-सुरक्षित क्लाइंट उत्पन्न करता है। यह IDE में ऑटो-कम्प्लीशन और न्यूनतम त्रुटियाँ सुनिश्चित करता है।
स्थापना
\nnpm install @prisma/client\nnpx prisma init\n\nउदाहरण: स्कीमा और क्वेरी
\nschema.prisma:
\ndatasource db {\n provider = "postgresql"\n url = env("DATABASE_URL")\n}\n\nmodel User {\n id Int @id @default(autoincrement())\n name String\n email String @unique\n}\n\nजावास्क्रिप्ट कोड:
\nconst { PrismaClie पुस्तकालय में भी
जावास्क्रिप्ट (Node.js) में रेट लिमिटिंग: express-rate-limit लाइब्रेरी के लिए पूर्ण गाइड
MailKit C# (.NET): पूर्ण गाइड उदाहरणों के साथ
Swift अनुप्रयोगों का कॉन्फ़िगरेशन: SwiftyConfiguration लाइब्रेरी
Swift में QR कोड जनरेटर: Core Image, CIFilter और कस्टम समाधान