假设您已经安装了 Node.js,创建目录以保存应用程序,并将其设置为工作目录。
$ npm install mysql
连接数据库
let mysql = require('mysql');
let sqluser = {
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
}
let connection = mysql.createConnection(sqluser);
执行以下代码即可查询出数据。
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()
插入数据
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()
删除数据
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()
上传图片
// 安装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 短信验证码服务
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;
验证码接口实现~
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;
安装 jsonwebtoken
$ 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();
});