admin 管理员组文章数量: 887019
1.目录的结构
node_modules 保存的是下载好的所需要的包文件目录(使用npm下载
安装方法 npm install express
使用npm
npm install 包名称
自动下载到当前目录下的node_modules中
npm init -y 初始化一个package.json文件,项目说明文件,会记录安装的包的所有信息
npm install 自动安装package.json和package-lock.json中的记录的包及对应的版本号
npm官网 npmjs
)
public 保存的是静态资源(即写好的HTML页面)
app.js 入口文件
pool.js 数据库模块
routes 路由器目录
2.public 保存的是静态的html代码,通过static来直接访问这些静态资源
public文件夹下html文件
user_detail.html文件
<h2>检索用户</h2>
<form method="get" action="/user/detail">
编号:<input type="text" name="uid">
<input type="submit">
</form>
user_list.html文件
<h2>用户列表</h2>
<form method="get" action="/user/list">
页码:<input type="text" name="pno"><br>
大小:<input type="text" name="count"><br>
<input type="submit">
</form>
user_login.html文件
<h2>用户登录</h2>
<form method="post" action="/user/login">
用户:<input type="text" name="uname"><br>
密码:<input type="text" name="upwd"><br>
<input type="submit">
</form>
user_reg.html文件
<h2>用户注册</h2>
<form method="post" action="/user/reg">
用户:<input type="text" name="uname"><br>
密码:<input type="text" name="upwd"><br>
手机:<input type="text" name="phone"><br>
邮箱:<input type="text" name="email"><br>
<input type="submit">
</form>
user_update.html文件
<h2>修改用户</h2>
<form method="post" action="/user/update">
编号:<input type="text" name="uid"><br>
邮箱:<input type="text" name="email"><br>
电话:<input type="text" name="phone"><br>
姓名:<input type="text" name="user_name"><br>
性别:<input type="text" name="gender"><br>
<input type="submit">
</form>
pool.js文件保存的是要连接到的数据库的内容
const mysql=require('mysql');
//创建连接池对象
let pool=mysql.createPool({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'',
database:'xz',
connectionLimit:15
});
//导出连接池对象
module.exports=pool;
app.js 文件保存的是文件的主体内容,是这个服务器的入口文件
const express=require('express');
//引入路由器
const userRouter=require('./routes/user.js');
//引入body-parser中间件模块
const bodyParser=require('body-parser');
let app=express();
app.listen(8080);
//托管静态资源到public目录
app.use( express.static('./public') );
//应用body-parser中间件
app.use( bodyParser.urlencoded({
extended:false
}) );
//应用路由器
// /user/reg
app.use( '/user',userRouter );
routes文件夹下user.js文件routes 文件下保存的是所需要的路由
下面创建的是一个user路由,在路由中实现用户信息的增删改查
const express=require('express');
//引入连接池模块
const pool=require('../pool.js');
//创建路由器对象
let router=express.Router();
//添加路由
//1.注册路由(post /reg)
router.post('/reg',function(req,res){
//1.1获取post请求的数据
let obj=req.body;
//1.2验证数据是否为空
if(!obj.uname){
res.send({code:401,msg:'uname required'});
//阻止继续往后执行
return;
}
if(!obj.upwd){
res.send({code:402,msg:'upwd required'});
return;
}
if(!obj.phone){
res.send({code:403,msg:'phone required'});
return;
}
if(!obj.email){
res.send({code:404,msg:'email required'});
return;
}
//1.3执行SQL命令
pool.query('INSERT INTO xz_user SET ?',[obj],
function(err,result){
if(err) throw err;
console.log(result);
});
res.send('注册成功');
});
//2.登录路由(post /login)
router.post('/login',function(req,res){
//2.1获取post请求的数据
let obj=req.body;
//console.log(obj);
//2.2验证数据是否为空
if(!obj.uname){
res.send({code:401,msg:'uname required'});
return;
}
if(!obj.upwd){
res.send({code:402,msg:'upwd required'});
return;
}
//2.3执行SQL命令
pool.query('SELECT * FROM xz_user
WHERE uname=? AND upwd=?',
[obj.uname,obj.upwd],function(err,result){
if(err) throw err;
console.log(result);
//结果是数组,如果数组长度大于0,找到匹配数据,
//登录成功;
//否则长度是0,登录失败
if(result.length>0){
res.send({code:200,msg:'login suc'});
}else{
res.send({code:301,msg:'login err'});
}
});
});
//3.检索用户(get /detail)
router.get('/detail',function(req,res){
//3.1获取get请求的数据(查询字符串)
let obj=req.query;
//console.log(obj);
//3.2验证数据是否为空
if(!obj.uid){
res.send({code:401,msg:'uid required'});
return;
}
//3.3执行SQL命令
pool.query('SELECT * FROM xz_user WHERE
uid=?',[obj.uid],function(err,result){
if(err) throw err;
console.log(result);
//判断是否查找到了用户,根据数组长度
if(result.length>0){
res.send({code:200,data:result[0]});
}else{
res.send({code:301,msg:'can not found'});
}
});
});
//4.修改用户(post /update)
router.post('/update',function(req,res){
//4.1获取post请求的数据
let obj=req.body;
//console.log(obj);
//4.2验证数据是否为空
//遍历对象,访问每个属性
let i=400;//记录状态码
for(let key in obj){
i++;//每遍历一个属性,值自动加1
//key 属性名 obj[key] 属性值
//console.log(key,obj[key]);
//如果属性值为空,提示该属性名必须提供
if(!obj[key]){
res.send({code:i,msg:key+' required'});
return;
}
}
//4.3执行SQL命令
pool.query('UPDATE xz_user SET ? WHERE uid=?'
,[obj,obj.uid],function(err,result){
if(err) throw err;
console.log(result);
//如果响应对象的affectedRows属性的值大于0,
//说明修改成功,否则修改失败
if(result.affectedRows>0){
res.send({code:200,msg:'update suc'});
}else{
res.send({code:301,msg:'update err'});
}
});
});
//5.用户列表(get /list)
router.get('/list',function(req,res){
//5.1获取get请求的数据
let obj=req.query;
//console.log(obj);
//5.2判断是否为空,如果为空设置默认值
if(!obj.pno){
obj.pno=1;
}
if(!obj.count){
obj.count=2;
}
//console.log(obj);
//5.3计算start
let start=(obj.pno-1)*obj.count;
//5.4每页数据量转为数值型
obj.count=parseInt(obj.count);
//5.5执行SQL命令
pool.query('SELECT * FROM xz_user LIMIT ?,?',
[start,obj.count],function(err,result){
if(err) throw err;
//console.log(result);
//把查询到数组响应给浏览器
res.send(result);
});
});
//导出路由器
module.exports=router;
版权声明:本文标题:Nodejs创建服务器数据库接口(增删改查登录注册) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1728999776h1305226.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论