**目的描述: **
我根据查到的总的数据数目和前端请求分页的每页数目,计算出要分的总的页数,以便于做个页码翻页。
出现问题:
代码部分:
router.get('/list',(req,res)=>{
var obj = req.query;
var $page = Math.round(obj.page);
var $size = Math.round(obj.size);
var $pageCount = null;
//临时存储 总页数
var pageCount = 0;//第一种写法
console.log(obj);
if(!$page){
$page = 1;
}
if(!$size){
$size = 10;
}
$page --;
console.log('前端请求条数'+$size);
console.log('初始值'+ pageCount);//this.pageCount
//console.log('初始值'+ pageCount);//第二种写法
//获得总的页面数
var sqlstr2 = 'SELECT * FROM xz_laptop';
pool.query(sqlstr2,(err,result)=>{
if(err) throw err;
if(result.length > 0){
//总页数
$pageCount = result.length;
console.log('总数据数'+$pageCount);
console.log($pageCount/$size);
pageCount = Math.ceil($pageCount/$size);
console.log('总的页数:'+ pageCount);
}
});
//分页查询
var sqlstr = 'SELECT * FROM xz_laptop LIMIT ? , ?';
pool.query(sqlstr,[($page*$size),$size],(err, result)=>{
//console.log()
if(err) throw err;
console.log(result);
if(result.length > 0){
console.log('返回页数'+ pageCount );
res.send({data:result,pno:($page+1),pCount:pageCount});
//res.send(result);
}else{
res.send({code:301,msg:'list error'});
}
});
采用第一种写法:pageCount只能获取到第一次服务器开启时的数据,此后返回的pageCount均为null,而且返回的数据对象是:
{data:…,
pno:…,//返回的页码
pCount:…,//总的页数,也就是我想要的数
pageCount:….//这是什么鬼,为什么会出现四个属性??
}
可是我原本的数据对象是这样的:
{data:result,pno:($page+1),pCount:pageCount}
为什么会多出来一个属性??这是一点。
采用第二种写法,直接不声明pageCount,后续的pageCount全部使用this.pageCount,就可以得到想要的结果数据,但是我并没有赋初始值,可是初始值哪里会打印一个1是什么鬼。而且为什么这样就能打印出来,因为是隐式的提升为对象的属性了吗??
如果有this指向问题,用变量保存了this,依然不行,结果是undefine,为什么呢?
还有像这种执行多条Sql语句是否能这样写?
望各位大佬指教!
考虑过函数提升、this指向、但是还是想不通,为什么呢??