प्रकार - माइग्रेशन
माइग्रेशन आपके डेटाबेस के लिए संस्करण नियंत्रण की तरह हैं। इसका उपयोग एप्लिकेशन के डेटाबेस स्कीमा को संशोधित करने और साझा करने के लिए किया जाता है। यह खंड इस बात की व्याख्या करता है कि टाइपफ़ॉर्म में माइग्रेशन कैसे काम करता है।
नया प्रवास बनाना
एक नया माइग्रेशन बनाने के लिए, पहले हमें ormconfig.json में कनेक्शन सेटअप करना होगा। यह नीचे परिभाषित किया गया है -
ormconfig.json
"type": "mysql", 
"host": "localhost", 
"port": 8889, 
"username": "root", 
"password": "root", 
"database": "Library", 
"entities": ["entity/*.js"], "migrationsTableName": "student_migration_table", "migrations": ["migration/*.js"], "cli": { 
   "migrationsDir": "migration" 
} 
    यहाँ,
- migrationsTableName - यह माइग्रेशन टेबल नाम को संदर्भित करता है।
 - migrations - टाइप दिए गए डायरेक्टरी से माइग्रेशन लोड करता है।
 - cli - इंगित करता है कि माइग्रेशन विशिष्ट निर्देशिका के अंदर बनाएगा।
 
पुस्तक इकाई बनाएँ
नाम से एक इकाई बनाते हैं Book इकाई अंदर src/entity/Book.ts निम्नानुसार है -
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'; 
@Entity() 
export class Book { 
   @PrimaryGeneratedColumn() 
   id: number; 
   
   @Column() 
   title: string;
   
   @Column() 
   text: string; 
} 
    नया माइग्रेशन बनाने के लिए CLI निष्पादित करें
अब, हम सीएलआई का उपयोग करके नए माइग्रेशन को निष्पादित कर सकते हैं -
वाक्य - विन्यास
typeorm migration:create -n <migration-name> 
    उदाहरण
typeorm migration:create -n myMigration 
    उपरोक्त कमांड निष्पादित करने के बाद, आप नीचे दी गई प्रतिक्रिया देख सकते हैं -
Migration /path/to/project/src/migration/1587101104904-myMigration.ts has been generated successfully. 
    अब, अंदर चलें src/migration/1587101104904-myMigration.ts फ़ाइल इसके समान दिखती है।
import {MigrationInterface, QueryRunner} from "typeorm"; 
export class myMigration1587101104904 implements MigrationInterface {      
   public async up(queryRunner: QueryRunner): Promise<any> { 
   } 
   
   public async down(queryRunner: QueryRunner): Promise<any> { 
   } 
} 
    यहाँ,
हमारे पास दो तरीके हैं up तथा down। up पद्धति का उपयोग माइग्रेशन में परिवर्तन और जोड़ने के लिए किया जाता है down आपके माइग्रेशन में हुए परिवर्तनों को वापस लाने के लिए विधि का उपयोग किया जाता है।
हमें जोड़ते हैं up अंदर की विधि myMigration.ts नीचे बताए अनुसार फाइल करें -
import {MigrationInterface, QueryRunner} from "typeorm"; 
export class Book1587131893261 implements MigrationInterface { 
   public async up(queryRunner: QueryRunner): Promise<any> { 
      await queryRunner.query(`ALTER TABLE book ADD COLUMN price int`); 
   }
   public async down(queryRunner: QueryRunner): Promise<any> { } 
} 
    यहाँ,
हमने एक नया कॉलम जोड़ा है price के भीतर bookतालिका। अब, उपरोक्त परिवर्तनों को जोड़ने के लिए CLI निष्पादित करें।
ts-node ./node_modules/typeorm/cli.js migration:run 
    उपरोक्त कमांड माइग्रेशन निष्पादित करता है और उन्हें एक क्रम में चलाता है। अब, आप अपनी स्क्रीन में नीचे परिवर्तन देख सकते हैं -
उत्पादन
                अब अपना mysql सर्वर खोलें, नया कॉलम जोड़ा गया है। इसे नीचे दिखाया गया है -
                इसी प्रकार, हम स्तंभ शीर्षक डेटाटाइप को varchar (30) में निम्नानुसार संशोधित कर सकते हैं,
import {MigrationInterface, QueryRunner} from "typeorm"; 
export class Book1587131893261 implements MigrationInterface { 
   public async up(queryRunner: QueryRunner): Promise<any> { 
   await queryRunner.query(`ALTER TABLE book MODIFY COLUMN title varchar(30)`); 
      } 
   public async down(queryRunner: QueryRunner): Promise<any> { 
   } 
} 
    अब, उसी कमांड को निष्पादित करें और आप नीचे परिवर्तन कर सकते हैं -
ts-node ./node_modules/typeorm/cli.js migration:run 
    उत्पादन
                Book तालिका को संशोधित किया गया है,
                माइग्रेशन वापस करें
चलिए नीचे दिए गए कोड को अंदर जोड़ते हैं down प्रवासन वापस करने की विधि -
import {MigrationInterface, QueryRunner} from "typeorm"; 
export class Book1587131893261 implements MigrationInterface { 
   
   public async up(queryRunner: QueryRunner): Promise<any> { 
   
   } 
   public async down(queryRunner: QueryRunner): Promise<any> { 
      await queryRunner.query(`ALTER TABLE book drop column price`); // reverts things made in "up" method 
   } 
} 
    अब, सभी परिवर्तनों को वापस करने के लिए नीचे दिए गए कमांड को निष्पादित करें -
ts-node ./node_modules/typeorm/cli.js migration:revert 
    आप निम्नलिखित प्रतिक्रिया देख सकते हैं -
उत्पादन
                Book तालिका को संशोधित किया गया है,
उत्पादन
                जैसा कि हमने इस अध्याय में देखा, TypeORM डेटाबेस माइग्रेशन स्क्रिप्ट लिखना आसान बनाता है।