마이그레이션 com TypeORM no NodeJs

21951 단어 migrationsnodetypeorm
Essa postagem tem como objetivo apresentar como criar migrations em aplicações NodeJs, para a criação vamos usar oRM TypeORM.
  • ORM(Object Relational Mapper): é uma técnica de mapeamento objeto relacional que permite fazer uma relação dos objetos com os dados que os mesmos Representativeam;
  • TypeORM é um ORM que pode ser executado em plataforma NodeJs, Browser, React Native, TypeScript, JavaScript entre outros, no nosso exemplo vamos configurar um projeto para poder usá-lo para criar e interagir com dados das tabelas;

  • 1 – 추가 파코테스



    필요한 추가 작업이 있을 경우 다음 명령을 실행하십시오.

    a) 유형ORM

    yarn add typeorm
    yarn add reflect-metadata
    


    b) 포스트그레스

    yarn add pg
    


    c) ts-노드

    yarn add -D ts-node-dev
    yarn add -D tsconfig-paths
    


    2 – 스크립트 패키지



    다음 집행자는 package.json을 사용하지 않고 스크립트를 실행하고 스크립트를 입력하거나 실행해야 합니다.

    "scripts": {
        "dev:server": "ts-node-dev -r tsconfig-paths/register  --inspect --transpile-only --ignore-watch node_modules src/server.ts",
        "start": "ts-node src/server.ts",
        "typeorm": "ts-node-dev -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
      },
    


    3 – ORM 구성



    Para poder criar e acessar a base de dados temos que criar as configurações, para isso cry na raiz do projeto or arquivo ormconfig.json.

    아니오 또는 mconfig.json coloque 또는 código abaixo:

    [{
      "name": "default",
      "type": "postgres",
      "host": "localhost",
      "port": 5432,
      "username": "postgres",
      "password": "docker",
      "database": "baseOrm",
      "entities": ["./src/models/**/*.ts"],
      "migrations": ["./src/migrations/*.ts"],
      "cli": {
        "migrationsDir": "./src/migrations/"
      }
    }]
    



  • 유형: 기본 유형의 유형: mysql, postgres, cockroachdb, mariadb, sqlite, better-sqlite3, cordova, nativescript, oracle, mssql, mongodb, sqljs, react-native;

  • 호스트: Banco de dados remoto 또는 VM을 사용하려면 o IP를 활용하십시오.

  • 포트: porta de acesso ao banco de dados;

  • 사용자 이름: usuário com acesso ao banco de dados;

  • 암호: senha de acesso ao banco de dados;

  • 데이터베이스: nome da base de dados;

  • 엔터티: 지역 onde vamos criar nossas entidades, essas entidades são as que vamos mapear;

  • 마이그레이션: informa o local onde nossas 마이그레이션 são carregadas;
  • migrationsDir: 로컬 onde as 마이그레이션 devem ser criada pelo CLI;

  • 4 – 엔티다데스



    Para exemplificar vou criar duas entidades com relacionamento one-to-one são elas: Profile e User.

    a) profile.ts

    import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
    
    @Entity("profiles")
    export default class Profile {
      @PrimaryGeneratedColumn("uuid")
      id: string;
    
      @Column()
      gender: string;
    
      @Column()
      photo: string;
    }
    


    b) user.ts

    import {
      Entity,
      PrimaryGeneratedColumn,
      Column,
      OneToOne,
      JoinColumn
    } from "typeorm";
    import Profile from "./profile";
    
    @Entity("users")
    export default class User {
      @PrimaryGeneratedColumn("uuid")
      id: string;
    
      @Column()
      name: string;
    
      @Column()
      profile_id: string;
    
      @OneToOne(type => Profile)
      @JoinColumn({ name: "profile_id" })
      profile: Profile;
    }
    


    다음 항목을 확인해야 합니다. user.ts que possui profile.ts.

    5 – 유형ORM CLI



    Depois de adicionar os pacotes, configuração os dados de acesso ao banco de dados e criar nossas entidades agora é hora de executar o comando para criar as tabelas.

    a) 크리어 마이그레이션

    yarn typeorm migration:create -n CreateProfile
    yarn typeorm migration:create -n CreateUser
    


    6 – 마이그레이션



    Após executar o passo acima será criados as migrations, temos que adicionar os códigos que vão criar as tabelas, segue abaixo:

    a) 마이그레이션 프로필

    import { MigrationInterface, QueryRunner, Table } from "typeorm";
    
    export default class CreateProfile1600016576988 implements MigrationInterface {
      public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.createTable(
          new Table({
            name: "profiles",
            columns: [
              {
                name: "id",
                type: "uuid",
                isPrimary: true,
                generationStrategy: "uuid",
                default: "uuid_generate_v4()"
              },
              {
                name: "gender",
                type: "varchar(200)"
              },
              {
                name: "photo",
                type: "varchar(200)"
              }
            ]
          })
        );
      }
    
      public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.dropTable("profiles");
      }
    }
    


    b) 마이그레이션 사용자

    import { MigrationInterface, QueryRunner, Table } from "typeorm";
    
    export default class CreateUser1600016590838 implements MigrationInterface {
      public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.createTable(
          new Table({
            name: "users",
            columns: [
              {
                name: "id",
                type: "uuid",
                isPrimary: true,
                generationStrategy: "uuid",
                default: "uuid_generate_v4()"
              },
              {
                name: "name",
                type: "varchar(200)"
              },
              {
                name: "profile_id",
                type: "uuid"
              }
            ],
            foreignKeys: [
              {
                name: "providerUser",
                referencedTableName: "profiles",
                referencedColumnNames: ["id"],
                columnNames: ["profile_id"],
                onDelete: "CASCADE",
                onUpdate: "CASCADE"
              }
            ]
          })
        );
      }
    
      public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.dropTable("users");
      }
    }
    


    Após criar as migrations vamos executar o comando para rodar as migrations e criar as tabelas:

    yarn typeorm migration:run
    


    Set tudo ocorre sem erro será criado as tabelas na base de dados igual segue a imagem abaixo:



    다음 명령을 실행할 수 있는 명령을 취소할 수 있습니다.

    yarn typeorm migration:revert
    


    Código completo GitHub

    좋은 웹페이지 즐겨찾기