paginacija

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
paginacija [2024/06/08 08:18]
tro создано
paginacija [2024/06/08 08:21] (текущий)
tro
Строка 8: Строка 8:
   * hasPreviousPage - прапор, який вказує, чи є для поточного запиту попередня сторінка   * hasPreviousPage - прапор, який вказує, чи є для поточного запиту попередня сторінка
   * hasNextPage - прапор, який вказує, чи є для поточного запиту наступна сторінка   * hasNextPage - прапор, який вказує, чи є для поточного запиту наступна сторінка
 +===== Створення пагінації =====
 +Під час створення бекенду ми не можемо довіряти всьому, що надсилає нам клієнт (фронтенд). Він може вислати невалідні значення або взагалі про них забути. Тому ми маємо обов’язково створити логіку парсингу параметрів пошуку. Функція parseNumber призначена для перетворення рядкових значень в числа і є особливо корисною в контекстах, де ми не можемо бути впевнені у типі даних, що надходять. Вона приймає два параметри: number, що є значенням для перетворення, та defaultValue, яке використовується як запасне, якщо перетворення неможливе.
 +
 +
 +<code>
 +// src/utils/parsePaginationParams.js
 +
 +const parseNumber = (number, defaultValue) => {
 +  const isString = typeof number === 'string';
 +  if (!isString) return defaultValue;
 +
 +  const parsedNumber = parseInt(number);
 +  if (Number.isNaN(parsedNumber)) {
 +    return defaultValue;
 +  }
 +
 +  return parsedNumber;
 +};
 +
 +</code>
 +
 +Приклад використання
 +<code>
 +// src/utils/parsePaginationParams.js
 +
 +/* Інший код файлу */
 +
 +export const parsePaginationParams = (query) => {
 +  const { page, perPage } = query;
 +
 +  const parsedPage = parseNumber(page, 1);
 +  const parsedPerPage = parseNumber(perPage, 10);
 +
 +  return {
 +    page: parsedPage,
 +    perPage: parsedPerPage,
 +  };
 +};
 +
 +</code>
 +<code>
 +// src/controllers/students.js
 +
 +import { parsePaginationParams } from '../utils/parsePaginationParams.js';
 +
 +/* Решта коду файла */
 +
 +export const getStudentsController = async (req, res) => {
 +  const { page, perPage } = parsePaginationParams(req.query);
 +  const students = await getAllStudents({
 +    page,
 +    perPage,
 +  });
 +
 +  res.json({
 +    status: 200,
 +    message: 'Successfully found students!',
 +    data: students,
 +  });
 +};
 +
 +</code>
  • /sites/data/attic/paginacija.1717834706.txt.gz
  • Последнее изменение: 2024/06/08 08:18
  • tro