Sobes.tech
Junior

Aké nástroje alebo technológie používate na prácu s databázami?

sobes.tech AI

Odpoveď od AI

Pre práce s databázami v Node.js používam nasledujúce nástroje a technológie:

  • ORM/ODM:
    • Sequelize: Pre relačné databázy (PostgreSQL, MySQL, SQLite, SQL Server). Poskytuje výkonné funkcie pre mapovanie objektov na relačné tabuľky, transakcie, migrácie a validáciu.
    • Mongoose: Pre databázy MongoDB. Objektovo-dokumentové mapovanie, schémy dát, validácia, dotazy.
  • Databázoví klienti:
    • pg: Nativný klient pre PostgreSQL.
    • mysql2: Modernejší a rýchlejší klient pre MySQL v porovnaní s mysql.
  • Nástroje migrácie:
    • sequelize-cli: Používa sa spolu so Sequelize na správu migrácií relačných databáz.
    • migrate-mongo: Nástroj na správu migrácií v MongoDB.
  • Nástroje na správu databáz (GUI):
    • DBeaver: Univerzálny nástroj pre rôzne typy databáz.
    • MongoDB Compass: Oficiálne GUI pre MongoDB.
  • Cacheovanie:
    • Redis: Často ho používam na cacheovanie dát z databázy, čo znižuje záťaž hlavnej databázy a zrýchľuje odpovede.

Príklad použitia Sequelize:

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

// Pripojenie k databáze
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'postgres' // alebo 'mysql', 'sqlite', 'mssql'
});

// Definícia modelu
const User = sequelize.define('User', {
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull predvolene je true
  }
}, {
  // Iné možnosti modelu
});

// Synchronizácia modelu s databázou
async function syncDatabase() {
  await User.sync({ force: true }); // 'force: true' odstráni a znovu vytvorí tabuľku
  console.log("Databáza synchronizovaná!");
}

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

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

Príklad použitia Mongoose:

const mongoose = require('mongoose');

// Pripojenie k MongoDB databáze
mongoose.connect('mongodb://localhost:27017/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// Definícia schémy
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// Vytvorenie modelu
const User = mongoose.model('User', userSchema);

// Príklad vytvorenia dokumentu
async function createUser() {
  const user = new User({ name: 'Alice', age: 30 });
  await user.save();
  console.log('Používateľ uložený!');
}

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

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

Výber konkrétneho nástroja závisí od typu databázy (relačná alebo NoSQL), požiadaviek projektu na abstrakciu a zložitosti dotazov, ako aj od preferencií tímu.