जावास्क्रिप्ट (Node.js) के लिए ORM: Sequelize, TypeORM, Prisma की तुलना

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

जावास्क्रिप्ट (Node.js) के लिए ORM: तुलना और उदाहरण

\n\n

Node.js पर सर्वर-साइड विकास करते समय, डेटाबेस के साथ इंटरैक्शन का प्रश्न जल्द या बाद में उठता है। शुद्ध SQL क्वेरी लिखना एक समय लेने वाला और त्रुटि-प्रवण कार्य है। ORM (Object-Relational Mapping) लाइब्रेरीज़ बचाव में आती हैं, जो डेटाबेस तालिकाओं के साथ सामान्य जावास्क्रिप्ट ऑब्जेक्ट की तरह काम करने की अनुमति देती हैं। इस लेख में, हम Node.js के लिए तीन सबसे लोकप्रिय ORM: Sequelize, TypeORM और Prisma की तुलना करेंगे, और स्पष्ट कोड उदाहरण प्रदान करेंगे।

\n\n

1. Sequelize

\n

Sequelize Node.js के लिए सबसे पुराने और सबसे परिपक्व ORM में से एक है। यह PostgreSQL, MySQL, MariaDB, SQLite और Microsoft SQL Server का समर्थन करता है। Sequelize मॉडल और प्रॉमिस (या async/await) के साथ क्लासिक दृष्टिकोण का उपयोग करता है।

\n\n

स्थापना

\n
npm install sequelize pg pg-hstore
\n\n

उदाहरण: मॉडल परिभाषा और क्वेरी

\n
const { 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\n

Sequelize की विशेषताएं

\n
    \n
  • परिपक्वता और बड़ा समुदाय।
  • \n
  • लेन-देन, माइग्रेशन और सीड-डेटा का समर्थन।
  • \n
  • लचीली एसोसिएशन प्रणाली (hasOne, hasMany, belongsToMany)।
  • \n
  • कमी: कभी-कभी भारी सिंटैक्स और जटिल डिबगिंग।
  • \n
\n\n

2. TypeORM

\n

TypeORM एक ORM है जो जावास्क्रिप्ट और TypeScript दोनों के साथ काम कर सकता है। यह Sequelize के समान DBMS का समर्थन करता है, और दो दृष्टिकोण प्रदान करता है: Active Record और Data Mapper। TypeORM सक्रिय रूप से डेकोरेटर का भी उपयोग करता है, जो कोड को अधिक घोषणात्मक बनाता है।

\n\n

स्थापना

\n
npm install typeorm reflect-metadata pg
\n\n

उदाहरण: डेकोरेटर के साथ मॉडल और क्वेरी

\n
import { 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\n

TypeORM की विशेषताएं

\n
    \n
  • TypeScript और डेकोरेटर के साथ उत्कृष्ट एकीकरण।
  • \n
  • लचीलापन: Active Record और Data Mapper के बीच चयन।
  • \n
  • माइग्रेशन, इवेंट सब्सक्राइबर और लॉगिंग का समर्थन।
  • \n
  • कमी: दस्तावेज़ीकरण कभी-कभी अधूरा, बार-बार breaking changes।
  • \n
\n\n

3. Prisma

\n

Prisma एक आधुनिक ORM है जो अपने पूर्ववर्तियों से मौलिक रूप से भिन्न है। कोड में मॉडल के बजाय, आप एक विशेष फ़ाइल schema.prisma में डेटा स्कीमा का वर्णन करते हैं, और Prisma एक टाइप-सुरक्षित क्लाइंट उत्पन्न करता है। यह IDE में ऑटो-कम्प्लीशन और न्यूनतम त्रुटियाँ सुनिश्चित करता है।

\n\n

स्थापना

\n
npm install @prisma/client\nnpx prisma init
\n\n

उदाहरण: स्कीमा और क्वेरी

\n

schema.prisma:

\n
datasource 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

जावास्क्रिप्ट कोड:

\n
const { PrismaClie                    

अनुशंसाएँ