nodejs路由中执行SQL语句

nodejs路由中执行SQL语句

nodejs路由中执行SQL语句

在nodejs路由中的基本语法pool.query(‘SQL语句’,[],callback),需要注意的几点:

①.执行SQL语句前需要验证提交数据不为空

②.执行SQL语句时,SQL语句中的属性全部用占位符?代替,放置于取值第二个参数数组中

③.回调函数中需要对响应的数据进行验证,从而验证SQL语句是否执行成功

具体方法如下,分为增删改查四大类,查询中又分为用户检索,用户列表,用户登录,共计6种情况:

1.SQL语句执行增加命令(用户注册)

//用户注册,需要用户名(uid),密码(upwd),邮箱(email),手机号(phone)
router.post(‘/reg’,(req,res)={
var obj=req.body;//返回对象
var i=400;
//验证数据是否为空,for-in 遍历对象
for(var key in obj){
i++;
//key为属性名称
//obj[key]为属性值
if(!obj[key]){
res.send({code:i,msg:key+’ required’});
return;
}
}
//执行SQL命令,增加用户
pool.query(‘INSERT INTO xz_user SET ?’,[obj],(err,result)=>{
if(err) throw err;
if(result.affectedRow>0){
res.send({code:200,msg:’register success’});
}
});
});

2.SQL语句执行删除命令(删除用户)

//用户删除,按uid删除即可
router.get(‘/delete’,(req,res)=>{
var obj=req.query;
//验证数据不为空
if(!obj.uid){
res.send({code:400,msg:’uid required’});
return;
}
//执行SQL语句,删除数据
pool.query(‘DELETE FROM xz_user WHERE uid=?’,[obj.uid],(err,result)=>{
if(err) throw err;
if(result.affectedRows>0){
res.send({code:200,msg:’delete success’});
} else{
res.send({code:301,msg:’delete error’});
}
});
});

3.SQL语句执行修改命令(用户修改)

//用户修改,需要改user_name,email,phone,gender
router.post(‘/update’,(req,res)=>{
var obj=req.body;
var i=400;
//验证数据不为空,for-in遍历对象
for(var key in obj){
i++;
if(!obj[key]){
res.send({code:i,msg:key+’ required’});
return;
}
}
//执行SQL语句,修改用户
pool.query(‘UPDATE xz_user SET user_name=?,email=?,phone=?,gender=? WHERE uid=?’,[obj.user_name,obj.email,obj.phone,obj.gender,obj.uid],(err,result)=>{
if(err) throw err;
if(result.affectedRows>0){
res.send({code:200,msg:’update success’});
}

});
});

4.SQL语句执行查询命令1(用户检索)

//用户检索,用户名uid是否在数据库里存在
router.get(‘/detail’,(req,res)=>{
var obj=req.query;//返回值为数组
if(!obj.uid){
res.send({code:300,msg:’uid required’});
return;
}
pool.query(‘SELECT * FROM xz_user WHERE uid=?’,[obj.uid],(err,result)=>{
if(err) throw err;
if(result.length>0){//console.log(result);返回一个数组
res.send(result);//返回查询结果
}else{
res.send({code:301,msg:’can not find’});
}
});
});

5.SQL语句查询命令2(用户列表)

//用户列表,页码为空,设置默认值为1;每页数量为空,设置默认值为5
router.get('/list',(req,res)=>{
    var obj=req.query;//返回值为数组
    var pno=obj.pno;
    var count=obj.count;
    //把pno,count转换为整型
    pno=parseInt(pno);
    count=parseInt(count);
    //如果页码为空,设置默认值为1
    if(!pno) pno=1;
    //如果每页数量为空,设置默认值为5
    if(!count) count=5;
    //计算每页开始的数量为start
    start=(pno-1)*nume;
    //执行SQL语句,查询分页数据
    pool.query('SELECT * FROM xz_user LIMIT ?,?',\[start,count\],(req,res)=>{
        if(err) throw err;
        res.send(result);
    });
});

6.SQL语句查询命令3(用户登录)

//用户登录,验证用户名uid和密码upwd在数据里是否存在
router.post(‘/login’,(‘req,res’)=>{
var obj=req.body;
//分别验证uid,upwd是否为空
if(!obj.uid){
res.send({code:300,msg:’uid required’});
return;
}
if(!obj.upwd){
res.send({code:301,msg:’upwd required’});
return;
}
//执行SQL语句,查询登录是否成功
pool.query(‘SELECT * FROM xz_user WHERE uid=? AND upwd=?’,[obj.uid,obj.upwd],(err,result)=>{
if(err) throw err;
if(result.length>0){
res.send({code:200,msg:’login sucess’});
}else{
res.send({code:300,msg:’login error’});
}
})
});

以上即是在路由中添加并执行的与用户相关的SQL命令,包含增删改查,重点在查询命令,也是nodejs在后端数据库连接是用的最多的地方。连续更新了3天技术相关的文章,发现自我陶醉在写代码的氛围,觉得写代码就像写诗一样美好。

不过,经过测试,后续还是在公众号专注于个人成长类的内容,毕竟如果能坚持五六年,回头看的时候,那是唯一能够看懂的东西吧。