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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FOREVER-Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值