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.以后更新