1.创建数据表
说明:创建id,username,password字段,并设置了类型。
2.导入mysql库
npm i mysql@2.18.1
3.创建了db文件夹
说明:创建mysql数据池
// 导入mysql包
const mysql=require("mysql")
// 创建mysql连接池
const db=mysql.createPool({
host:"127.0.0.1",
user:"root",
password:"123456",
database:"convenience_services"
})
// 暴露mysql连接池
module.exports=db
4.声明请求方法
const express = require("express");
// 创建路由对象
const router = express.Router();
// 导入用户相关的函数处理
const { register, login } = require("../router_handler/user");
// 注册接口
router.post("/login", login);
// 登录接口
router.post("/register", register);
module.exports = router;
5. 处理函数模块
// 导入db数据库连接池
const db = require("../db/mysql");
// 注册函数处理
exports.register = (req, res) => {
// 定义注册sql语句(下面一句是mysql第三库的简便写法(对象))
const sql = `insert into user set?`;
// 数据库操作方法
db.query(sql, req.query, (err, results) => {
if (err)
return res.send({
status: 1,
message: err.message,
});
if (results.affectedRows !== 1)
return res.send({
status: 1,
message: "注册失败,请稍后再试",
});
res.send({
status: 0,
message: "注册成功",
});
});
};
// 登录函数处理
exports.login = (req, res) => {
// 用户输入的密码
const { username, password } = req.query;
// sql语句
const sql = `select * from user where username=?`;
db.query(sql, username, (err, results) => {
if (err)
return res.send({
status: 1,
message: err.message,
});
if (results.length !== 1)
return res.send({
status: 1,
message: "登录失败,请稍后再试",
});
// 数据库返回的密码
const dataPassword = results[0].password;
if (dataPassword !== password)
return res.send({
status: 1,
message: "账号和密码错误",
});
res.send({
status: 0,
message: "登录成功",
});
});
};
6.注册实现
7.登录
8.总结
说明:
1.多次执行的就应该封装中间件。
2.没有加入表单验证。
3.密码没有进行加密处理。
4.请求方式应该放入body中,而不是query来传递账号和密码,很不安全。
5.应该加入token,用户登录时派发。
9.以后更新