← Назад к вопросам
Приведи пример запроса на чтение в БД
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