我是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);
}
});