nodejs mysql query 方法 第二个参数默认值

let db = {};

db.pool = mysql.createPool({
            host     : this.config.host,
            user     : this.config.user,
            password : this.config.password,
            database : this.config.database,
            multipleStatements: true,//允许执行多条查询语句
        });

db.pool.getConnection((err,connect)=>{
                        if(err) res.json({msg:'获取连接失败!',err:err});
                        connect.query(userSql.getJurisByJids,(err,rows)=>{
                        if(err) res.json({msg:'查询失败!',err:err});
                        connect.release();
                        res.json({msg:'dd',err:rows});
                        });    

要说的是 query 方法

自己已亲试过的

query(第一个参数是一个sql,第二个参数可以是一个数组,第三个是一个回调方法(回调的第一个参数是错误执行错误的时候有值,第二个参数是成功时的返回值))

重点说 query 的第二个参数 可以是一个数组,当然也可以是别的值,也可以不错在,只有写了两个参数时,第二个参数则是回调;

如果 sql  这样写 select * from test where id = ?

? 这里是占位符,query 第二个参数为 数组时就可以往占位符 里传值了

connect.query('select * from test where name = ? and id > ?',['testname','2'],(err,rows)=>{});

sql 则会被query  解析成 select * from test where name = 'testname' and id > 2

然后封装时 

给query  封装成 方法 

不确定用不用 query 占位符的功能 怎么办 

判断?

function(sql,v){

if(v.length>0){

connect.query(sql,v,(err,rows)=>{
                  
                  
                });            

}else{

connect.query(sql,(err,rows)=>{
                  
                });            

}

这样应该是可以解决问题,但是想都不想我不会这样写的,太 low 了,让封装心情都没了

query 内部方法 肯定 有默认值,知道那个默认值是啥了,默认一下就 ok了 不想查资料,试一下,

有了下面的代码

query(sql,value = false){    
        return new Promise((reslove,reject)=>{
            this.getConnection().then(connect=>{

                connect.query(sql,value,(err,rows)=>{
                    if(err) reject({msg:'查询失败!',err:err});
                    reslove(rows);
                    this.release(connect);
                });            
            }).catch(err=>reject({msg:'查询错误!',err:err}));                    
        });
    }

运气比较好,第一个就猜对了

第二个参数默认 false

解决问题,不知道算不算完美

 

注:代码都是临场打的,或是从 写好的类 里面 抠出来的一部分

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值