Node+mysql-注册和登录账号实现(原生)

1.创建数据表

说明:创建id,username,password字段,并设置了类型。

Node+mysql-注册和登录账号实现(原生)_第1张图片

2.导入mysql库

 npm i [email protected]

Node+mysql-注册和登录账号实现(原生)_第2张图片

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.注册实现

Node+mysql-注册和登录账号实现(原生)_第3张图片

7.登录

Node+mysql-注册和登录账号实现(原生)_第4张图片 8.总结

说明:

1.多次执行的就应该封装中间件。

2.没有加入表单验证。

3.密码没有进行加密处理。

4.请求方式应该放入body中,而不是query来传递账号和密码,很不安全。

5.应该加入token,用户登录时派发。

9.以后更新

 

 

你可能感兴趣的:(Node.js,node.js,mysql,服务器)