Xandr24
@Xandr24
учиться и еще раз учиться

Как выдать страницу '/' за страницу '/1' для пагинации в node.js?

Добрый день всем, хотел начать отрисовывать пагинацию но столкнулся со следующей проблемой:
я тяну данные из бд, отображаю по 10 записей на странице, но вся проблема в главной странице '/'. Страницы '/' и '/1' должны отображать одни и теже данные (последние 10 записей), но я не могу проставить offset на главную страницу (на странице '/1' он высчитывается) который рассчитывается по формуле limit * (page - 1), То есть, когда пользоватлеь переходит на страницу '/1' все робит но переходить то он изначально будет на страницу '/' и вот на ней уже ничего не будет отображаться так как offset принимает отрицательное значение и выдается ошибка, как мне исправить данную проблему? чтобы и '/' и '/1' воспринимались как '/1'
вот код
router.get('/:page?', async (req, res, next) => {
  let limit = 10;
  let offset = 0;
  try {
      let { page = null } = req.params;
      console.log(page);
      console.log(req.params.page);
      if (page !== null) {
         page = Number(page);

         if (Number.isNaN(page)) {
             next();

             return;
         }
      }

      const result = await User.findAll({
        limit: limit,
        offset: offset,//limit * (page - 1),
        order: [
          ['id', 'DESC']
        ]
      })
      res.render('index', { result });

      //.catch(console.log.bind(console));
      //console.log(result);
  } catch (e) {
    next(e);
  }
});
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
0xD34F
@0xD34F
Хотите 1 при отсутствии значения - ну так и используйте 1 как значение по умолчанию, замените null на 1 в
let { page = null } = req.params;.

А сейчас у вас

offset принимает отрицательное значение

как раз из-за того, что null конвертируется в 0 при вычислении offset'а, 0 - 1 сколько будет - сами понимаете.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы