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

时间:2025-02-18 22:45:43

let db = {};

= ({
            host     : ,
            user     : ,
            password : ,
            database : ,
            multipleStatements: true,//允许执行多条查询语句
        });

((err,connect)=>{
                        if(err) ({msg:'获取连接失败!',err:err});
                        (,(err,rows)=>{
                        if(err) ({msg:'查询失败!',err:err});
                        ();
                        ({msg:'dd',err:rows});
                        });    

要说的是 query 方法

自己已亲试过的

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

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

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

? 这里是占位符,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(>0){

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

}else{

(sql,(err,rows)=>{
                  
                });            

}

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

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

有了下面的代码

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

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

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

第二个参数默认 false

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

 

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