微醺_岁月 2018-09-16 06:50
浏览 924

请教一个关于NodeJs中在多个pool.query回调中的变量赋值问题?

**目的描述: **

我根据查到的总的数据数目和前端请求分页的每页数目,计算出要分的总的页数,以便于做个页码翻页。
出现问题:
代码部分:

 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指向、但是还是想不通,为什么呢??

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 spring后端vue前端
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题
    • ¥15 Visual Studio问题