生成包结构
npm init -y
下载express
npm i express
下载mysql
npm i mysql
准备前台文件
login.html
<form action="http://127.0.0.1:3000/login" method="post">
用户名<input type="text" name="username" ><br>
密码:<input type="password" name="pwd" ><br>
<input type="submit" value="登录">
</form>
register.html
<form action="http://127.0.0.1:3000/register" method="post">
用户名<input type="text" name="username" ><br>
密码:<input type="password" name="pwd" ><br>
<input type="submit" value="注册">
</form>
新建db.js文件 实现数据的增删改查
db.js
//引入mysql
const mysql = require("mysql");
//连接池
const pool = mysql.createPool({
host:"localhost",
user:"root",
password:"123456",
database:"py",
//可选
queueLimit:3,
connectionLimit:20
})
//添加一个query方法
let query = function(sql,callBack){
pool.getConnection((err,conn)=>{
if(err){
console.log(err);
return
}
conn.query(sql,(err,data)=>{
if(err){
console.log(err);
return
}
if(callBack){
callBack(data);
}
})
})
}
//封装 插入一条数据
let insert = (table,datas,callBack)=>{
//拼接SQL
let fields = ''; //字段
let values = ''; //值
for(const k in datas){
fields += k+"," //拼接字段
values += `'${datas[k]}',` //拼接数据
}
//清除最后一位的逗号
fields = fields.slice(0,-1);
values = values.slice(0,-1);
console.log(fields);
console.log(values);
let sql = `INSERT INTO ${table} (${fields}) VALUES (${values})`;
query(sql,callBack);
}
//封装一个删除方法
let del = (table,datas,callBack)=>{
let arr = ['1=1']; //避免datas为空时 出现异常错误
for(const k in datas){
arr.push(`${k}='${datas[k]}'`);
}
let sql = `delete from ${table} where ${arr.join(" and ")}`;
query(sql,callBack)
}
/**
* 修改方法
* @param {string} table 表名
* @param {object} sets 修改的字段与值
* @param {object} wheres 判断条件
* @param {Function} callBack 回调函数
*/
let update = (table,sets,wheres,callBack)=>{
//准备一个数组 用来拼接 where子句
let whereArr = [`1=1`]; //避免datas为空 出现异常
for(const k in wheres){
whereArr.push(`${k}='${wheres[k]}'`); //拼接
}
//准备一个数组 用来拼接 set 子句
let setArr = [];
for(const k in sets){
setArr.push(`${k}='${sets[k]}'`) //for in 遍历 数组 k 是一个索引 遍历对象 k是一个键
// console.log();
}
let sql = `UPDATE ${table} SET ${setArr.join(",")} WHERE ${whereArr.join(" and ")}`
query(sql,callBack)
}
//暴露出去方法
module.exports = {
query,
insert,
del,
update
}
const express = require("express"); //引入express模块
const db = require("./db"); //引入增删改查模块
const app = express();
const port = 3000;
//固定写法 解析post参数 写在路由的前面
app.use(express.urlencoded({extended:false}));
app.get("/",(req,res)=>res.send("hello word!"));
//分页查询 默认一页现实3条数据
app.get("/list",(req,res)=>{
let arr = [{
id:1,
name:"三国演义",
price:59,
author:"罗贯中"
},{
id:2,
name:"水浒传",
price:49,
author:"施耐庵"
},{
id:3,
name:"西游记",
price:69,
author:"吴承恩"
},{
id:4,
name:"红楼梦",
price:89,
author:"曹雪芹"
},{
id:5,
name:"镜花缘",
price:58,
author:"李汝珍"
},{
id:6,
name:"金瓶梅",
price:72,
author:"兰陵笑笑生"
}]
//结构赋值
let {page,pageSize}=req.query;
res.send(arr.slice((page-1)*pageSize,page*pageSize));
})
//登录
app.post("/login",(req,res)=>{
// res.send(req.body.username)
// res.send(req.body.pwd)
db.query("select * from user where name = '"+req.body.username+"' and pwd = '"+req.body.pwd+"'",(data)=>{
if (data.length > 0) {
res.send("登录成功!");
}else{
res.send("登录失败!");
}
})
})
//注册
app.post("/register",(req,res)=>{
let user = {
name:req.body.username,
pwd:req.body.pwd
}
db.insert("user",user,()=>{
res.send("注册成功");
}else{
res.send("注册失败")
})
})
//动态参数
app.get("video/:id/:name",(req,res)=>{
res.send(req.params);
})
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
运行app.js测试即可
node app.js