用nodejs建立伺服器實現使用者資訊的增刪改查
阿新 • • 發佈:2018-11-09
1.目錄的結構
node_modules 儲存的是下載好的所需要的包檔案目錄(使用npm下載)
public 儲存的是靜態資源(即寫好的HTML頁面)
app.js 入口檔案
pool.js 資料庫模組
routes 路由器目錄
2.public 儲存的是靜態的html程式碼,通過static來直接訪問這些靜態資源
3.pool.js 儲存的是要連線到的資料庫的內容
//建立mysql連線池
const mysql = require('mysql');
var pool = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: '',
database: 'xz',
connectionLimit: 10
});
//把建立好的連線池匯出
module.exports = pool;
4.app.js 儲存的是檔案的主體內容,是這個伺服器的入口檔案
//使用express構建web伺服器 const express = require('express'); //引入中介軟體 const bodyParser = require('body-parser'); //引入路由器 var user = require('./routes/user.js'); var product = require('./routes/product.js'); var cart = require('./routes/shoppingcart.js'); var app = express(); var server = app.listen(3000); //使用body-parser中介軟體 app.use(bodyParser.urlencoded({extended:false})); //託管靜態資源到public目錄下 app.use(express.static('public')); //使用路由器來管理路由 //把user這個路由器掛載到/user下 app.use('/user',user); //把product路由器掛載到/product下 app.use('/product',product); //把shoppingcart路由器掛載到/shoppingcart下 app.use('/cart',cart);
5.routes 檔案下儲存的是所需要的路由
下面建立的是一個user路由,在路由中實現使用者資訊的增刪改查
//user模組 const express = require('express'); var router = express.Router(); //引入連線池 var pool = require('../pool.js'); //往router中新增路由 //一、使用者註冊 router.post('/register',(req,res)=>{ //res.send('註冊成功'); //獲取表單中的資料 //console.log(req.body); //在這塊執行把資料插入到資料庫中 //1.檢測使用者名稱不能為空 var $uname = req.body.uname; if(!$uname){ res.send({code: 401,msg: 'uname required'}); return; //阻止程式繼續向後執行 } //2.檢測密碼不能為空 var $upwd = req.body.upwd; if(!$upwd){ res.send({code: 402,msg: 'upwd required'}); return; } //3.檢測郵箱不能為空 var $email = req.body.email; if(!$email){ res.send({code: 403,msg: 'email required'}); return; } //4.檢測手機號不能為空 var $phone = req.body.phone; if(!$phone){ res.send({code: 404,msg: 'phone required'}); return; } var sql = `INSERT INTO xz_user VALUES(NULL,?,?,?,?,NULL,NULL,NULL)`; pool.query(sql,[$uname,$upwd,$email,$phone],(err,result)=>{ if(err){ throw err; //丟擲異常 } res.send({code: 200,msg: 'register success'}); }); }); //二、使用者登入 router.post('/login',(req,res)=>{ //console.log(req.body); //res.send('login success'); //1.檢測使用者名稱和密碼 var $uname = req.body.uname; if(!$uname){ res.send({code: 401,msg: 'uname is not null'}); return; } var $upwd = req.body.upwd; if(!$upwd){ res.send({code: 402,msg: 'upwd is not null'}); return; } //2.在資料庫中查詢使用者名稱和密碼匹配的資料 var sql = `SELECT * FROM xz_user WHERE uname=? and upwd=?`; pool.query(sql,[$uname,$upwd],(err,result)=>{ //如果result陣列長度大於0,說明登入成功,否則說明使用者名稱或者密碼錯誤 console.log(result); if(result.length > 0){ res.send({code: 200,msg: 'login success'}); }else{ res.send({code: 301,msg: 'uname or upwd is error'}); } }); }); //三、使用者列表 router.get('/list',(req,res)=>{ //獲取提交的資料 //console.log(req.query); //如果頁碼為空,預設設定為1 var $pno = req.query.pno; if(!$pno){ $pno = 1; } //如果每頁大小為空,預設設定為5,否則把使用者輸入的值轉為整型 var $pageSize = req.query.pageSize; if(!$pageSize){ $pageSize = 5; }else{ $pageSize = parseInt($pageSize); //必須轉成整型,不然會出錯 } //根據頁碼和每頁大小查詢使用者列表 //開始 = (當前的頁碼-1)*每頁大小 var sql = `SELECT * FROM xz_user ORDER BY uid ASC LIMIT ?,?`; pool.query(sql,[($pno-1)*$pageSize,$pageSize],(err,result)=>{ res.send(result); }); }); //四、使用者檢索 router.get('/query',(req,res)=>{ //console.log(req.query); var $uid = req.query.uid; //判斷檢索的內容是否為空,如果為空,輸出錯誤資訊 if(!$uid){ res.send({code: 302,msg: 'uid required'}); return; //如果不設定return的話,會報錯 Can't set headers after they are sent } var sql = `SELECT * FROM xz_user WHERE uid=?`; pool.query(sql,[$uid],(err,result)=>{ if(err){ throw error; } res.send(result[0]); }); }); //五、刪除使用者資訊 router.post('/delete',(req,res)=>{ var $uid = req.body.uid; if(!$uid){ res.send({code: 303,msg: 'uid required'}); return; } var sql = `DELETE FROM xz_user WHERE uid=?`; pool.query(sql,[$uid],(err,result)=>{ res.send({code: 200,msg: 'delete success'}); }); }); //六、修改使用者資訊 router.post('/update',(req,res)=>{ console.log(req.body); var $email = req.body.email; if(!$email){ res.send({code: 401,msg: 'email required'}); return; } var $phone = req.body.phone; if(!$phone){ res.send({code: 402,msg: 'phone required'}); return; } var $user_name = req.body.user_name; if(!$user_name){ res.send({code: 403,msg: 'user_name required'}); return; } var $gender = req.body.gender; if(!$gender){ res.send({code: 404,msg: 'gender required'}); return; } var $uid = req.body.uid; if(!$uid){ res.send({code: 405,msg: 'uid required'}); return; } var sql = `UPDATE xz_user SET email=?,phone=?,user_name=?,gender=? WHERE uid=?`; pool.query(sql,[$email,$phone,$user_name,$gender,$uid],(err,result)=>{ if(err){ throw error; } res.send('修改成功'); }); }); //匯出路由器 module.exports = router;