Что хочу получить (подгрузка новостей по нажатию кнопки)
Изначально хочу загрузить с сервера (express js) три новости, далее по нажатию кнопки показывать еще + 1 новость.
Когда новость последняя - скрыть кнопку "Показать еще"
(логика на клиенте ясна)
Теперь запросы к БД
1) Получаем количество записей в таблице
SELECT COUNT(*) FROM news
2) Ставлю ограничение на выборку
SELECT * FROM news LIMIT ${req.params.from}, ${req.params.lim}
Далее при нажатии на кнопку с клиента идет AJAX запрос и меняем LIMIT
Код сервера
app.get('/news/:from/:lim', (req,res) => {
connection.query(`SELECT * FROM news LIMIT ${req.params.from}, ${req.params.lim}`, function(error, rows) {
if(error) throw new Error(error);
res.json(rows);
});
});
app.get('/news', (req,res) => {
connection.query(`SELECT COUNT(*) FROM news `, function(error, rows) {
if(error) throw new Error(error);
res.json(rows);
});
});
Итог как оптимизировать запросы,
Сейчас логика такова
1) Запрос с LIMIT 0,3 - загрузили первые три новости
2) Запрос на получение количества записей в таблице COUNT
3) Запрос по нажатию кнопки - изменяем LIMIT 4, 1
При следующем клики повторятся шаги 2 и 3(LIMIT 5,1)
Можно ли все эти действия объединить в один запрос ?
Как хочу сделать
при каждом возврате новостей сервер отдаёт общее количество новостей (COUNT), оставшееся количество новостей и текущий порядковый номер новости (для использования в LIMIT)
При таком раскладе я постоянно буду знать порядковый номер текущей новости и LIMIT(news_now+1) не будет превышать COUNT.
Снизиться нагрузка на сервер - вместо 3 запросов будет один
Как это реализовать?
Буду благодарен за помощь!