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

Trabalhando com Bancos de Dados em TypeScript: PostgreSQL e MongoDB



TypeScript é uma linguagem de programação poderosa que adiciona tipagem estática ao JavaScript. No desenvolvimento de aplicações web modernas, trabalhar com bancos de dados é uma parte essencial. Neste artigo, veremos como trabalhar eficientemente com dois bancos de dados populares — o relacional PostgreSQL e o orientado a documentos MongoDB — usando TypeScript.



1. Preparação do ambiente e escolha do ORM



Antes de começar, é necessário configurar o projeto. Crie um novo projeto Node.js com suporte a TypeScript:



mkdir ts-database-democd ts-database-demonpm init -ynpm install typescript @types/node ts-node --save-devnpx tsc --init


Para trabalhar com bancos de dados, usaremos bibliotecas populares:

  • Prisma — ORM moderno para PostgreSQL (e outros bancos SQL)
  • Mongoose — ODM para MongoDB com excelente suporte a TypeScript


Instale os pacotes necessários:



npm install prisma @prisma/client mongoosenpm install @types/mongoose --save-dev


2. Trabalhando com PostgreSQL via Prisma



Prisma é um ORM que gera automaticamente tipos TypeScript com base no esquema do seu banco de dados. Isso garante segurança total de tipos.



2.1. Configuração do Prisma



Inicialize o Prisma no projeto:



npx prisma init


No arquivo prisma/schema.prisma, defina o modelo de dados:



generator client {  provider = "prisma-client-js"}

datasource db { provider = "postgresql" url = env("DATABASE_URL")}

model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt}

model Post { id Int @id @default(autoincrement()) title String content String? published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId Int createdAt DateTime @default(now()) updatedAt DateTime @updatedAt}


Crie o arquivo .env com a string de conexão:



DATABASE_URL="postgresql://user:password@localhost:5432/mydb"


Execute a migração:



npx prisma migrate dev --name init


2.2. Operações CRUD com TypeScript



Agora vamos escrever código tipado para trabalhar com o banco de dados. Crie o arquivo src/postgres.ts:



import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

interface CreateUserInput { email: string; name?: string;}

interface CreatePostInput { title: string; content?: string; authorId: number;}

// Criar usuárioasync function createUser(data: CreateUserInput) { return await prisma.user.create({ data: { email: data.email, name: data.name, }, });}

// Obter todos os usuários com postsasync function getUsersWithPosts() { return await prisma.user.findMany({ include: { posts: true, }, });}

// Criar postasync function createPost(data: CreatePostInput) { return await prisma.post.create({ data: { title: data.title, content: data.content, authorId: data.authorId, }, });}

// Atualizar usuárioasync function updateUser(id: number, data: Partial<CreateUserInput>) { return await prisma.user.update({ where: { id }, data, });}

// Deletar usuárioasync function deleteUser(id: number) { return await prisma.user.delete({ where: { id }, });}

// Exemplo de uso(async () => { try { const user = await createUser({ email: 'ivan@example.com', n

Blogs

Book Recommendations