Neste artigo, veremos como lidar com migrações com o framework NestJS (framework de desenvolvimento de aplicativos do lado do servidor construído sobre Node.js) combinado com TypeORM (framework ORM como Hibernate e pode ser usado com Typescript e Javascript).
Vamos começar com a configuração inicial, antes de tudo, precisamos criar nosso novo projeto com a Nest CLI
npm i -g @nestjs/cli
nest new nestjs-typeorm
Se você quiser testá-lo, você pode executar: “npm start” e o servidor estará rodando emhttp://localhost:3000,claro por enquanto, apenas o servidor com NestJS sem nenhuma configuração do TypeORM
Para integração com bancos de dados SQL e NoSQL, a Nest fornece o @nestjs/typeormpacote. Nest usa TypeORM porque é o Mapeador Relacional de Objetos (ORM) mais maduro disponível para TypeScript. Por ser escrito em TypeScript, ele se integra bem ao framework Nest.
Neste caso atualmente estou usando postgres como DBMS Relacional . Então eu preciso instalar as próximas bibliotecas:
npm install --save @nestjs/typeorm typeorm pg
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: '',
port: 5432,
username: '',
password: '',
database: '',
entities: [],
synchronize: true,
ssl: true,
extra: {
ssl: {
rejectUnauthorized: false,
},
},
}),
],
})
export class AppModule {}
Alternativamente, em vez de passar um objeto de configuração para forRoot(), podemos criar um ormconfig.jsonarquivo no diretório raiz do projeto.
[
{
"name": "default",
"type": "postgres",
"host": "",
"port": 5432,
"username": "",
"password": "",
"database": "",
"entities": ["dist/**/*.entity{ .ts,.js}"],
"synchronize": true,
"migrations": ["dist/migrations/*{.ts,.js}"],
"migrationsTableName": "migrations_history",
"migrationsRun": true,
"ssl": true,
"extra": {
"ssl": {
"rejectUnauthorized": false
}
}
}
]
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [TypeOrmModule.forRoot()],
})
export class AppModule {}
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
}
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from 'src/entities/User.entity';
@Module({
imports: [TypeOrmModule.forRoot({
entities: [User],
synchronize: true,
})],
})
export class AppModule {}
Agora precisamos escrever migrações para a entidade User . Vamos criar uma pasta migrations no diretório src e executar o próximo comando:
npx typeorm migration:create -n UserData -d src/migrations
import { MigrationInterface, QueryRunner } from "typeorm";
export class UserData1629150144285 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
queryRunner.query("INSERT INTO User (id, firstName, lastName) VALUES (1, 'John', 'Doe');");
}
public async down(queryRunner: QueryRunner): Promise<void> {
queryRunner.query('DELETE FROM User;');
}
}
npm run build
typeorm migration:run
typeorm migration:run
typeorm migration:revert
Espero que gostem deste artigo! Lembre-se, a Força estará sempre com você.
Hoje estou continuando a série de perguntas de entrevista do Node JS. Esta série será baseada em 5 partes que cobrem as questões importantes feitas em entrevistas do Básico ao Avançado Antes de começar.
Hoje estou continuando a série de perguntas de entrevista do Node JS. Esta série será baseada em 5 partes que cobrem as questões importantes feitas em entrevistas do Básico ao Avançado Antes de começar.
Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.
[Alerta de gatilho: este ensaio inclui capturas de tela de pessoas elogiando o assassino de Jordan Neely.] Os policiais finalmente - e talvez com relutância - acusaram Daniel Penny, o homem que sufocou Jordan Neely até a morte, por aquele homicídio.
No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.