← Назад к вопросам

Приведи пример запроса на чтение в БД

1.6 Junior🔥 221 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Пример запроса на чтение из БД

Основной пример с SQL

Вот классический пример чтения данных из PostgreSQL:

const pool = require('./db'); // подключение к БД

async function getUserById(userId) {
  const query = 'SELECT id, name, email, created_at FROM users WHERE id = $1';
  const result = await pool.query(query, [userId]);
  return result.rows[0];
}

// Использование
const user = await getUserById(123);
console.log(user); // { id: 123, name: 'John', email: 'john@example.com', ... }

С использованием ORM (Sequelize/Prisma)

Более современный подход с Prisma:

const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

async function getUserById(userId) {
  const user = await prisma.user.findUnique({
    where: { id: userId },
    select: {
      id: true,
      name: true,
      email: true,
      createdAt: true
    }
  });
  return user;
}

Чтение нескольких записей

Часто нужно получить список с фильтрацией и пагинацией:

async function getActiveUsers(page = 1, limit = 10) {
  const offset = (page - 1) * limit;
  
  const query = `
    SELECT id, name, email, status 
    FROM users 
    WHERE status = 'active' 
    ORDER BY created_at DESC 
    LIMIT $1 OFFSET $2
  `;
  
  const result = await pool.query(query, [limit, offset]);
  return result.rows;
}

С использованием кэша

В production часто кэшируют частые запросы:

const redis = require('redis');
const client = redis.createClient();

async function getUserCached(userId) {
  const cached = await client.get(`user:${userId}`);
  
  if (cached) {
    return JSON.parse(cached);
  }
  
  const query = 'SELECT * FROM users WHERE id = $1';
  const result = await pool.query(query, [userId]);
  const user = result.rows[0];
  
  if (user) {
    await client.setEx(`user:${userId}`, 3600, JSON.stringify(user));
  }
  
  return user;
}

Ключевые моменты

Параметризованные запросы — всегда используй $1, $2 (PostgreSQL) или ? (MySQL), никогда не склеивай строки (SQL injection)

Обработка ошибок — оборни в try/catch и логируй ошибки на уровне выше

Оптимизация — выбирай только нужные поля через SELECT, используй индексы для WHERE условий

Асинхронность — все операции с БД async, никогда не блокируй event loop

Приведи пример запроса на чтение в БД | PrepBro