Я новичок в Node.js и пытаюсь создать нумерацию страниц на стороне сервера, используя Express и MySQL, если это возможно. Прямо сейчас, все, что мне удалось, это создать многостраничный. Я использую Jade в качестве движка шаблонов. Я знаю, что могу создать его на стороне клиента, но, учитывая, что для этого мне нужно использовать AJAX-запрос, я не получаю никакого повышения производительности для этого.
//GET DATA FROM DB WITH OFFSET!!!
Users.prototype.get_offset_data = function(page_number, category, plans) {
let blocksize = 12;
let cat;
let offset = (page_number - 1) * blocksize;
let plan = plans ? `where json_extract(plans, '$.${plans}') = true` : '';
if (plan === '') {
cat = category ? `where category = ${category}`: '';
} else {
cat = category ? `and category = ${category}`: '';
}
let query = `select * from test_video_category ${plan} ${cat} limit ? offset ? `;
console.log(query);
return new Promise((resolve, reject) => {
this.conn.query(query,[blocksize, offset], function(err,rows){
if(err) reject(err);
return resolve(rows);
});
});
};
//GET COUNT OF ALL ELEMENTS FROM DB!!
Users.prototype.get_limited_data_page_number = function(category, plans) {
let cat;
let plan = plans ? `where json_extract(plans, '$.${plans}') = true` : '';
if (plan === '') {
cat = category ? `where category = ${category}`: '';
} else {
cat = category ? `and category = ${category}`: '';
}
let query = `select count(*) as row_count from test_video_category ${plan} ${cat}`;
console.log(query);
return new Promise((resolve, reject) => {
this.conn.query(query, function (err, data) {
if (err) reject(err);
return resolve(data);
});
});
};
//SEND DATA TO NEW PREVIEW PAGE
router.get('/new-preview-page', function (req, res, next) {
let page_number = req.query.page_number;
let category = req.query.category;
let plans = req.query.plans;
try {
req.getConnection( async function (err, connection) {
if (err) return next(err);
let Users = new users(connection);
let offset_data = await Users.get_offset_data(page_number, category, plans);
let count_data = await Users.get_limited_data_page_number(category, plans);
if (offset_data && count_data) res.render('marketplace', {offset_data: offset_data, count_data: count_data});
});
}catch (e) {
console.log(e);
}
});