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

请教一个关于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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!