一、請求封裝
有一些請求方法使用非常頻繁,這裏我們將它封裝一下;在項目根目錄下創建一個sql文件夾,然後下面創建一個http.js文件,用來管理共用的請求方法。
let mysql = require('mysql');
let db = require('../config/db');
let pool = mysql.createPool(db);
const jwt = require('jwt-simple');
const express = require('express')
const app = express()
app.set('jwtTokenSecret', 'YOUR_SECRET_STRING')
const $http = {
connPool (sql, val, cb) {
pool.getConnection((err, conn) => {
let query = conn.query(sql, val, (err, result) => {
if (err) {
console.log(err);
}
cb(err, result);
conn.release();
});
});
},
// json格式
writeJson(res, result) {
if(typeof result === 'undefined') {
res.send('err')
} else {
res.json(result);
}
},
// user驗證
userVerify(req, res, cb) {
let params = req.body
let userId = params.userId
let resultData = {}
let token=req.headers.token //獲取前端請求頭髮送過來的token
let decoded = jwt.decode(token, app.get('jwtTokenSecret'))
if (!userId || decoded.iss!=userId) {
resultData = {
code: 2,
message: 'userId有誤'
}
$http.writeJson(res, resultData)
} else {
if(decoded.exp <= Date.now()){
resultData = {
code: 20,
message: '登錄過期'
}
$http.writeJson(res, resultData)
}else{
cb()
}
}
}
};
module.exports = $http
二、sql語句封裝
在項目根目錄下創建一個sql文件夾,然後下面創建一個sqlMap.js文件,用來封裝sql語句。
這是mysqljs中的語法,?就是變量,雙??是表名或字段名,單?則爲value。
const sqlMap = {
user: {
// 登陸
login: 'select * from user where name = ? and password = ? and state != 0',
// 新增用戶
add: 'insert IGNORE into user (name, password, email, create_time, update_time) values (?, ?, ?, ?, ?)',
// 更新用戶信息
updateInfo: 'update user set name = ?, password = ?, email = ?, update_time = ? where id = ? and type != 1 and state != 0',
// 更改用戶狀態
updateState: 'update user set state = ?, update_time = ? where id = ? and type != 1 and state != 0',
// 獲取用戶信息
getDetail: 'select * from user where id = ? and state != 0',
// 查詢週報列表條數
selectTotal: 'select count(*) as totalCount from user where state != 0',
// 用戶列表
selectList: 'select id, name, email, type, create_time, update_time, state from user where state != 0'
},
weekly: {
// 新增週報
add: 'insert into weekly (userId, startTime, endTime, title, thisWeekWork, nextWeekWork, collaboration, create_time, update_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)',
// 更新週報信息
updateInfo: 'update weekly set startTime = ?, endTime = ?, title = ?, thisWeekWork = ?, nextWeekWork = ?, collaboration = ?, update_time = ? where id = ? and state != 0',
// 更新週報狀態
updateState: 'update weekly set state = ?, update_time = ? where id = ? and state != 0',
// 查詢週報列表條數
selectTotal: 'select count(*) as totalCount from weekly where state != 0',
// 查詢週報列表
selectList: 'select weekly.id, userId, user.name as userName, startTime, endTime, title, weekly.create_time, weekly.update_time, weekly.state from weekly,user where weekly.userId = user.id and weekly.state != 0',
// 以id爲主條件查詢某篇週報詳情
getDetail: 'select weekly.id, userId, user.name as userName, startTime, endTime, title, thisWeekWork, nextWeekWork, collaboration, weekly.create_time, weekly.update_time, weekly.state from weekly,user where weekly.userId = user.id and weekly.state != 0 and weekly.id=?'
}
}
module.exports = sqlMap;
三、項目體驗鏈接
週報管理系統體驗鏈接:https://www.17sucai.com/pins/35488.html
本人前端程序員,長期混跡於各種前端開發中,現在專門爲前端熱愛者建了個微信羣,和大家一起分享自己在工作、學習中遇到的技術知識或問題,還有各種資料和課程,各位感興趣的可以加入哦~