Вопрос проверяет понимание реализации серверной сортировки и пагинации для обработки больших объемов данных на бэкенде.
Когда данных слишком много (например, 100 000 записей), загружать их все на клиент невозможно — это приведет к зависанию браузера и огромному потреблению трафика. Вместо этого сервер возвращает только одну страницу данных, отсортированную по заданному полю. Клиент отправляет параметры: номер страницы, размер страницы, поле сортировки и направление.
Рассмотрим пример на Node.js с Express и SQL. Клиент делает GET-запрос:
GET /api/users?page=2&limit=20&sortBy=name&order=ascБэкенд обрабатывает параметры и формирует SQL-запрос:
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 20;
const offset = (page - 1) * limit;
const sortBy = req.query.sortBy || 'id';
const order = req.query.order === 'desc' ? 'DESC' : 'ASC';
const query = `SELECT * FROM users ORDER BY ${sortBy} ${order} LIMIT ${limit} OFFSET ${offset}`;
const countQuery = `SELECT COUNT(*) as total FROM users`;Важно экранировать sortBy, чтобы избежать SQL-инъекций — используйте белый список полей. Также возвращаем общее количество записей для расчета количества страниц:
const totalResult = await db.query(countQuery);
const total = totalResult.rows[0].total;
const totalPages = Math.ceil(total / limit);
res.json({
data: result.rows,
page,
limit,
total,
totalPages
});Серверная сортировка и пагинация — обязательный паттерн для масштабируемых приложений. Он позволяет эффективно работать с миллионами записей, минимизируя нагрузку на клиент и сеть. Всегда используйте его, когда объем данных превышает несколько тысяч строк.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию