Что такое CRUD?

«Что такое CRUD?» — вопрос из категории Базы данных, который задают на 35% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CRUD — это акроним, описывающий четыре фундаментальные операции для работы с данными в приложении:

  • Create (Создание)
  • Read (Чтение)
  • Update (Обновление)
  • Delete (Удаление)

В экосистеме Node.js CRUD-операции чаще всего реализуются в виде RESTful API с использованием фреймворков, таких как Express или Nest.js, и взаимодействием с базой данных через драйвер или ORM/ODM.

Пример набора базовых маршрутов Express для сущности Task:

const express = require('express');
const router = express.Router();
const Task = require('../models/Task'); // Модель Mongoose

// CREATE
router.post('/', async (req, res) => {
  try {
    const task = new Task(req.body);
    await task.save();
    res.status(201).json(task);
  } catch (error) {
    res.status(400).json({ error: error.message });
  }
});

// READ (все)
router.get('/', async (req, res) => {
  const tasks = await Task.find({});
  res.json(tasks);
});

// READ (один)
router.get('/:id', async (req, res) => {
  const task = await Task.findById(req.params.id);
  if (!task) return res.status(404).json({ message: 'Task not found' });
  res.json(task);
});

// UPDATE
router.patch('/:id', async (req, res) => {
  const task = await Task.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true });
  if (!task) return res.status(404).json({ message: 'Task not found' });
  res.json(task);
});

// DELETE
router.delete('/:id', async (req, res) => {
  const task = await Task.findByIdAndDelete(req.params.id);
  if (!task) return res.status(404).json({ message: 'Task not found' });
  res.status(204).send();
});

В реальных проектах эти операции дополняются валидацией входящих данных (например, с помощью Joi или class-validator), аутентификацией, авторизацией, пагинацией и фильтрацией для операций чтения.