Trabalho com bancos de dados em TypeScript: PostgreSQL e MongoDB

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao trabalho com bancos de dados em TypeScript

TypeScript é uma extensão estritamente tipada do JavaScript que adiciona tipagem estática e recursos modernos da linguagem. Ao desenvolver aplicações server-side em TypeScript, frequentemente surge a necessidade de interagir com bancos de dados. Duas das soluções mais populares são o SGBD relacional PostgreSQL e o MongoDB orientado a documentos. Neste artigo, veremos como trabalhar eficientemente com ambos os bancos de dados em TypeScript, utilizando bibliotecas comprovadas e melhores práticas.



Configuração do ambiente e instalação de dependências

Antes de começar, certifique-se de ter Node.js e npm instalados. Crie um novo projeto e instale os pacotes necessários:

mkdir typescript-db-examplecd typescript-db-examplenpm init -ynpm install typescript ts-node @types/node --save-devnpx tsc --init

Para trabalhar com PostgreSQL, usaremos TypeORM — um ORM poderoso com suporte a TypeScript. Para MongoDB, usaremos Mongoose.

npm install typeorm reflect-metadata pgnpm install mongoose


Trabalhando com PostgreSQL via TypeORM

Configuração da conexão com PostgreSQL

TypeORM suporta decorators e active record. Vamos criar o arquivo data-source.ts para configuração:

import { DataSource } from "typeorm";

export const AppDataSource = new DataSource({ type: "postgres", host: "localhost", port: 5432, username: "your_username", password: "your_password", database: "test_db", synchronize: true, logging: false, entities: ["src/entity/**/*.ts"], migrations: [], subscribers: [],});


Criação de entidade (Entity)

Vamos definir um modelo de usuário usando decorators:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()export class User { @PrimaryGeneratedColumn() id: number;

@Column() firstName: string;

@Column() lastName: string;

@Column({ unique: true }) email: string;

@Column({ default: true }) isActive: boolean;}


Operações CRUD com PostgreSQL

Vamos realizar as operações básicas com o banco de dados:

import { AppDataSource } from "./data-source";import { User } from "./entity/User";

async function main() { await AppDataSource.initialize(); const userRepository = AppDataSource.getRepository(User);

// CREATE const newUser = userRepository.create({ firstName: "Ivan", lastName: "Petrov", email: "ivan@example.com" }); await userRepository.save(newUser);

// READ const users = await userRepository.find(); console.log("Todos os usuários:", users);

// UPDATE const userToUpdate = await userRepository.findOneBy({ id: 1 }); if (userToUpdate) { userToUpdate.isActive = false; await userRepository.save(userToUpdate); }

// DELETE await userRepository.delete({ id: 1 });}

main().catch(console.error);


Trabalhando com MongoDB via Mongoose

Conexão ao MongoDB

Mongoose fornece schema e validação convenientes para MongoDB. Vamos configurar a conexão:

import mongoose, { Schema, Document, Model } from "mongoose";

const MONGO_URI = "mongodb://localhost:27017/test";

mongoose.connect(MONGO_URI) .then(() => console.log("Conectado ao MongoDB")) .catch(err => console.error("Erro de conexão:", err));


Definição de schema e modelo

Vamos criar uma interface para TypeScript e um schema Mongoose:

// Interface para TypeScriptinterface IUser extends Document {    firstName: string;    lastName: string;    email: string;    createdAt: Date;}

// Schema Mongooseconst userSchema = new Schema({ firstName: { type: String, required: true }, lastName: { type: String, required: true }, email: { type: String, required: true }, createdAt: { type: Date, default: Date.now }});

Blogs

Book Recommendations