Node.js + MySQL 實現曾刪改查,上傳圖片, sms服務, token驗證~

假設您已經安裝了 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();
複製代碼

});

複製代碼
相關文章
相關標籤/搜索