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
解决问题,不知道算不算完美
注:代码都是临场打的,或是从 写好的类 里面 抠出来的一部分