Sobes.tech
Junior

Jaké nástroje nebo technologie používáte pro práci s databázemi?

sobes.tech AI

Odpověď od AI

Pro práci s databázemi v Node.js používám následující nástroje a technologie:

  • ORM/ODM:
    • Sequelize: Pro relační databáze (PostgreSQL, MySQL, SQLite, SQL Server). Poskytuje výkonné funkce pro mapování objektů na relační tabulky, transakce, migrace a validaci.
    • Mongoose: Pro databáze MongoDB. Objektově-dokumentové mapování, schémata dat, validace, dotazy.
  • Databázoví klienti:
    • pg: Nativní klient pro PostgreSQL.
    • mysql2: Modernější a rychlejší klient pro MySQL ve srovnání s mysql.
  • Nástroje migrace:
    • sequelize-cli: Používá se ve spojení se Sequelize pro správu migrací relačních databází.
    • migrate-mongo: Nástroj pro správu migrací v MongoDB.
  • Nástroje pro správu databází (GUI):
    • DBeaver: Univerzální nástroj pro různé typy databází.
    • MongoDB Compass: Oficiální GUI pro MongoDB.
  • Caching:
    • Redis: Často používám pro cacheování dat z databáze, což snižuje zátěž hlavní databáze a urychluje odpovědi.

Příklad použití Sequelize:

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

// Připojení k databázi
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'postgres' // nebo 'mysql', 'sqlite', 'mssql'
});

// Definice modelu
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull defaultně true
  }
}, {
  // Další možnosti modelu
});

// Synchronizace modelu s databází
async function syncDatabase() {
  await User.sync({ force: true }); // 'force: true' odstraní a znovu vytvoří tabulku
  console.log("Databáze synchronizována!");
}

// Příklad dotazu
async function findUser() {
  const users = await User.findAll();
  console.log(users.map(user => user.toJSON()));
}

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

Příklad použití Mongoose:

const mongoose = require('mongoose');

// Připojení k databázi MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// Definice schématu
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// Vytvoření modelu
const User = mongoose.model('User', userSchema);

// Příklad vytvoření dokumentu
async function createUser() {
  const user = new User({ name: 'Alice', age: 30 });
  await user.save();
  console.log('Uživatel uložen!');
}

// Příklad dotazu
async function findUsers() {
  const users = await User.find({ age: { $gte: 25 } });
  console.log(users);
}

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

Výběr konkrétního nástroje závisí na typu databáze (relační nebo NoSQL), požadavcích projektu na abstrakci a složitosti dotazů, stejně jako na preferencích týmu.