1. 程式人生 > >用nodejs建立伺服器實現使用者資訊的增刪改查

用nodejs建立伺服器實現使用者資訊的增刪改查

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;