Работа с базами данных в JavaScript: PostgreSQL и MongoDB для начинающих

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение в работу с базами данных в JavaScript (Node.js)

Современная веб-разработка редко обходится без взаимодействия с базами данных. Будь то хранение пользователей, постов блога или данных для аналитики — умение работать с базами данных (БД) — обязательный навык для каждого разработчика. В этой статье мы рассмотрим два самых популярных типа баз данных: реляционную PostgreSQL и документо-ориентированную MongoDB. Мы напишем простые примеры на JavaScript (Node.js), которые помогут вам начать работу с обеими системами.

1. Подготовка окружения и установка зависимостей

Прежде чем писать код, необходимо установить драйверы для взаимодействия Node.js с выбранными базами данных. Для этого создайте новый проект и выполните установку пакетов через npm.

Установка драйверов

  • pg — популярный клиент для PostgreSQL.
  • mongoose — ODM (Object Document Mapper) для MongoDB, упрощающий работу с коллекциями.
mkdir db-example && cd db-example
npm init -y
npm install pg mongoose

Теперь ваше окружение готово к экспериментам.

2. Работа с PostgreSQL из Node.js

PostgreSQL — это мощная реляционная база данных, которая использует SQL для запросов. Мы подключимся к локальному серверу, создадим таблицу и выполним базовые операции CRUD (Create, Read, Update, Delete).

Подключение к базе данных

Создайте файл postgres.js и добавьте следующий код для подключения:

const { Pool } = require('pg');

const pool = new Pool({
    user: 'your_username',
    host: 'localhost',
    database: 'testdb',
    password: 'your_password',
    port: 5432,
});

async function connect() {
    try {
        const client = await pool.connect();
        console.log('Подключено к PostgreSQL');
        client.release();
    } catch (err) {
        console.error('Ошибка подключения:', err);
    }
}

connect();

Создание таблицы и вставка данных

Теперь добавим функцию для создания таблицы users и вставки записей:

async function createTable() {
    const query = `
        CREATE TABLE IF NOT EXISTS users (
            id SERIAL PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            email VARCHAR(100) UNIQUE NOT NULL
        );
    `;
    await pool.query(query);
    console.log('Таблица users создана');
}

async function insertUser(name, email) {
    const query = 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *';
    const values = [name, email];
    const res = await pool.query(query, values);
    console.log('Добавлен пользователь:', res.rows[0]);
}

// Пример использования
createTable().then(() => insertUser('Иван', 'ivan@example.com'));

Чтение и обновление данных

Получим всех пользователей и обновим email:

async function getUsers() {
    const res = await pool.query('SELECT * FROM users');
    console.log('Все пользователи:', res.rows);
}

async function updateUserEmail(id, newEmail) {
    const query = 'UPDATE users SET email = $1 WHERE id = $2 RETURNING *';
    const res = await pool.query(query, [newEmail, id]);
    console.log('Обновлен пользователь:', res.rows[0]);
}

getUsers().then(() => updateUserEmail(1, 'ivan_new@example.com'));

PostgreSQL отлично подходит для проектов, где важна целостность данных и сложные связи между таблицами.

3. Работа с MongoDB из Node.js

MongoDB — это NoSQL база данных, которая хранит данные в формате, похожем на JSON (BSON). Она гибкая и не требует строгой схемы. Для работы мы будем использовать Mongoose.

Подключение к MongoDB

Создайте файл mongo.js:

const mongoose = require('mongoose');

const connectDB = async () => {
    try {
        await mongoose.connect('mongodb://localhost:27017/testdb', {
            useNewUrlParser: true,
            useUnifiedTopology: true,
        });
        console.log('Подключено к MongoDB');
    } catch (err) {
        console.error('Ошибка подключения:', err);
    }
};

connectDB();

Создание схемы и модели

В отличие от PostgreSQL, в MongoDB мы сначала определяем схему (структуру документа) и модель:

const userSchema = new mongoose.Schema({
    name: { type: String, required: true },
    email: { type: String, required: true, unique: true },
    createdAt: { type: Date, default: Date.now }
});

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

CRUD операции с Mongoose

Добавим функции для создания, чтения и обновления документов:

// Создание
async function createUser(name, email) {
    const user = new User({ name, email });
    const savedUser = await user.save();
    console.log('Создан пользователь:', savedUser);
}

// Чтение
async function getUsers() {
    const users = await User.find();
    console.log('Все пользователи:', users);
}

// Обновление
async function updateUser(id, newName) {
    const updatedUser = await User.findByIdAndUpdate(id, { name: newName }, { new: true });
    console.log('Обновлен пользователь:', updatedUser);
}

createUser('Мария', 'maria@example.com').then(() => getUsers());

MongoDB идеально подходит для быстрого прототипирования и проектов с неструктурированными данными.

4. Сравнение PostgreSQL и MongoDB

Чтобы помочь вам сделать выбор, приведем краткое сравнение:

  • Структура данных: PostgreSQL использует таблицы и строки; MongoDB — коллекции и документы.
  • Гибкость схемы: В PostgreSQL схема строгая; в MongoDB — динамическая.
  • Сложные запросы: PostgreSQL поддерживает JOIN и агрегации; MongoDB имеет свой мощный aggregation pipeline.
  • Масштабирование: PostgreSQL лучше вертикальное; MongoDB — горизонтальное (шардирование).
  • Когда выбирать: PostgreSQL — для финансовых систем, интернет-магазинов; MongoDB — для систем аналитики, IoT, блогов.

Заключение

В этой статье мы разобрали, как подключаться и выполнять базовые операции с двумя популярными базами данных из Node.js: PostgreSQL и MongoDB. Вы узнали, как установить драйверы, создать таблицу/коллекцию и работать с данными. Теперь вы можете выбрать подходящую БД для своего проекта и начать интегрировать её в своё приложение. Практикуйтесь — и вскоре работа с базами данных станет для

Блоги

Рекомендаций по книгам