假設您已經安裝了 Node.js,建立目錄以保存應用程序,並將其設置爲工做目錄。node
$ npm install mysql
複製代碼
鏈接數據庫mysql
let mysql = require('mysql');
let sqluser = {
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
}
let connection = mysql.createConnection(sqluser);
複製代碼
執行如下代碼便可查詢出數據。web
var sql = 'SELECT * FROM sqlName';
connection.query(sql, (err, results, fields) => {
if(err){console.log('[SELECT ERROR] - ',err.message);return;}
console.log(results);
});
connection.end()
複製代碼
插入數據sql
let sql = `INSERT INTO users(name,tel,password) VALUES(?,?,?,)`;
let data = ["name","tel","password"];
connection.query(sql,data, (err, results, fields) => {
if(err){console.log('[INSERT ERROR] - ',err.message);return;}
console.log(results);
});
connection.end()
複製代碼
更新數據數據庫
let sql = `UPDATE sqlName SET name = ?,tel = ?,password = ? WHERE id = ?`;
let data = ["name","tel","password"];
connection.query(sql,data, (err, results, fields) => {
if(err){console.log('[UPDATE ERROR] - ',err.message);return;}
console.log(results);
});
connection.end()
複製代碼
刪除數據express
let sql = `DELETE FROM sqlName WHERE id = ?`;
let data = id;
connection.query(sql,data, (err, results, fields) => {
if(err){console.log('[DELETE ERROR] - ',err.message);return;}
console.log(results);
});
connection.end()
複製代碼
上傳圖片npm
// 安裝Node.js模塊,用於解析表單數據,尤爲是文件上載。
npm i formidable
// 引入formidable模塊,和node fs文件系統。
var formidable = require('formidable');
var fs = require('fs')
// 建立一個新的傳入表單。
var form = new formidable.IncomingForm()
// 爲輸入的表單字段設置編碼。
form.encoding = 'utf-8';
// 設置用於放置文件上傳的目錄。您能夠稍後使用fs.rename()移動它們。
form.uploadDir = 'public/images/';
// 若是您但願寫入form.uploaddir的文件包含原始文件的擴展名,請設置
form.keepExtensions = true;//保留後綴
// 限制全部字段(文件除外)能夠以字節爲單位分配的內存量。若是超過此值,'error'則發出事件。默認大小爲20MB。
form.maxFieldsSize = 2 * 1024 * 1024;
//處理圖片
form.parse(req, function (err, fields, files){
// 存入硬盤
let filename = files.file.name
fs.renameSync(item.path, 'public/images/'+filename);
// 存入數據庫
sql = `INSERT INTO img(title,name,img_src) VALUES(?,?,?,?,?)`;
data = [fields.title,fields.name,'public/images/'+filename]
connection.query(sql,data, (err, results, fields) => {
if(err){console.log('[DELETE ERROR] - ',err.message);return;}
console.log(results);
res.status(200).json({msg:'上傳成功',data:results});
});
connection.end()
})
複製代碼
Sms 短信驗證碼服務json
const Core = require('@alicloud/pop-core');
var md5 = require('md5');
var client = new Core({
accessKeyId: '',
accessKeySecret: '',
endpoint: '',
apiVersion: '2017-05-25'
});
let sendSms = function (PhoneNumbers,callback) {
let code = Math.floor(Math.random()) // 這裏能夠乘想得到的驗證碼長度~
let params = {
"RegionId": "cn-hangzhou",
"PhoneNumbers": PhoneNumbers.toString(),
"SignName": "小小小小的商城",
"TemplateCode": "SMS_160571696",
"TemplateParam": "{code:"+code+"}"
}
let requestOption = {
method: 'POST'
};
// console.log(code)
// callback && callback(md5(code))
client.request('SendSms', params, requestOption).then((result) => {
callback && callback({smsRes:result,code:md5(code)})
}, (ex) => {
callback && callback({smsRes:ex,code:ex.Message})
})
}
module.exports = sendSms;
複製代碼
驗證碼接口實現~api
var express = require('express');
var router = express.Router();
var sendSms = require('../library/sms')
router.post('/', function (req, res) {
console.log(req.body)
sendSms(req.body.tel,(smsMsg)=>{
console.log(smsMsg)
res.status(200).json(smsMsg)
})
})
module.exports = router;
複製代碼
安裝 jsonwebtokenbash
$ npm install jsonwebtoken
複製代碼
生成token
const jwt = require('jsonwebtoken');
const token = jwt.sign({ key, exp: 30}, 'my_secret_key'); //key 獲取 用戶相關 變量,‘my_secret_key’ 服務器 私有 變量。exp 過時時間。
複製代碼
執行如下代碼便可驗證token。
jwt.verify(token, 'my_secret_key', function (err, decoded) { //jwt解析
console.log(err,decoded) //獲取信息 進行下一步操做
if (err) {
if (err.message === "jwt expired") {
return res.status(200).json({success:false, msg:'token過時,請從新登陸'});
}
return res.status(200).json({error: "登陸信息有誤"});
} else {
return res.status(200).json({success:true, msg:'token 正確'});
複製代碼
}
// console.log(decoded) //獲取信息 進行下一步操做
//next();
複製代碼
});
複製代碼