Sobes.tech
Junior

Que ferramentas ou tecnologias utiliza para trabalhar com bases de dados?

sobes.tech IA

Resposta da IA

Para trabalhar com bases de dados no Node.js, utilizo as seguintes ferramentas e tecnologias:

  • ORM/ODM:
    • Sequelize: Para bases de dados relacionais (PostgreSQL, MySQL, SQLite, SQL Server). Oferece um conjunto poderoso de funções para mapear objetos para tabelas relacionais, transações, migrações e validações.
    • Mongoose: Para bases de dados MongoDB. Mapeamento objeto-documento, esquemas de dados, validação, consultas.
  • Clientes de bases de dados:
    • pg: Cliente nativo para PostgreSQL.
    • mysql2: Cliente mais moderno e rápido para MySQL em comparação com mysql.
  • Ferramentas de migração:
    • sequelize-cli: Usado juntamente com Sequelize para gerir migrações em bases de dados relacionais.
    • migrate-mongo: Ferramenta para gerir migrações no MongoDB.
  • Ferramentas de gestão de bases de dados (GUI):
    • DBeaver: Ferramenta universal para diferentes tipos de bases de dados.
    • MongoDB Compass: GUI oficial para MongoDB.
  • Caching:
    • Redis: Frequentemente usado para cachear dados da base de dados, reduzindo a carga na base principal e acelerando respostas.

Exemplo de uso do Sequelize:

const { Sequelize, DataTypes } = require('sequelize');

// Conexão à base de dados
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'postgres' // Ou 'mysql', 'sqlite', 'mssql'
});

// Definição do modelo
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull por padrão é true
  }
}, {
  // Outras opções do modelo
});

// Sincronizar o modelo com a base de dados
async function syncDatabase() {
  await User.sync({ force: true }); // 'force: true' irá eliminar e recriar a tabela
  console.log("Base de dados sincronizada!");
}

// Exemplo de consulta
async function findUser() {
  const users = await User.findAll();
  console.log(users.map(user => user.toJSON()));
}

// syncDatabase();
// findUser();

Exemplo de uso do Mongoose:

const mongoose = require('mongoose');

// Conexão à base de dados MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// Definição do esquema
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// Criação do modelo
const User = mongoose.model('User', userSchema);

// Exemplo de criação de documento
async function createUser() {
  const user = new User({ name: 'Alice', age: 30 });
  await user.save();
  console.log('Utilizador guardado!');
}

// Exemplo de consulta
async function findUsers() {
  const users = await User.find({ age: { $gte: 25 } });
  console.log(users);
}

// createUser();
// findUsers();

A escolha de uma ferramenta específica depende do tipo de base de dados (relacional ou NoSQL), dos requisitos do projeto em termos de abstração e complexidade das consultas, bem como das preferências da equipa.