博客
关于我
node+express+mysql 实现登陆注册
阅读量:792 次
发布时间:2023-02-16

本文共 3468 字,大约阅读时间需要 11 分钟。

基于 Node、Express 和 MySQL 实现的 登录注册 系统

在开始之前,我们需要完成以下几个步骤来搭建一个完整的登录注册系统。通过本文,你将学习如何从零开始使用 Node.js、Express 和 MySQL 创建一个基本的用户认证系统。

1. 安装必要的软件

首先,我们需要确保我们的开发环境已经准备就绪。以下是安装所需软件的步骤:

  • 安装 Node.js:你可以通过官网或包管理工具进行安装。例如,在终端中运行以下命令:

    curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -sudo apt-get install -y nodejs
  • 安装 Express:Express 是一个基于 Node.js 的快速开发框架。可以通过以下命令全局安装 Express:

    npm install express -g
  • 安装 MySQL:如果你还没有安装 MySQL,可以通过官网或包管理工具进行安装。例如,在 Ubuntu 系统中:

    sudo apt-get install mysql-server

2. 初始化项目

通过 Express 初始化一个项目,可以选择使用ejs 或 jade 等模板引擎。我们这里使用ejs:

express -g

然后进入项目目录,初始化项目:

cd my_projectnpm init -y

3. 配置数据库

接下来,我们需要配置数据库。首先,确保你已经安装了 MySQL 并且能够访问数据库。以下是数据库配置的示例:

{  "development": {    "url": "mysql://root:secret@localhost:3306/mydb",    "dialect": "mysql"  },  "test": {    "url": "mysql://root:secret@localhost:3306/testDB",    "dialect": "mysql"  }}

config/db.js 文件中定义数据库连接信息。

4. 建立路由

我们需要创建路由文件,处理用户的登录和注册逻辑。在 routes/user.js 中添加以下内容:

const express = require('express');const router = express.Router();const db = require('../config/db');router.get('/register', (req, res) => {  // 获取用户信息,检查是否已注册  const { phone } = req.query;  const query = 'SELECT * FROM users WHERE phone = ?';  db.query(query, phone, (err, result) => {    if (err) {      res.send({ status: 500, msg: '数据库错误' });    } else if (result.length > 0) {      res.send({ status: 0, msg: '用户已存在' });    } else {      // 插入新用户      const insertQuery = 'INSERT INTO users (phone) VALUES (?)';      db.query(insertQuery, [phone], (err, result) => {        if (err) {          res.send({ status: 500, msg: '注册失败' });        } else {          res.send({ status: 0, msg: '注册成功' });        }      });    }  });});router.get('/login', (req, res) => {  // 获取用户信息,验证登录  const { phone, password } = req.query;  const query = 'SELECT * FROM users WHERE phone = ?';  db.query(query, phone, (err, result) => {    if (err) {      res.send({ status: 500, msg: '数据库错误' });    } else if (result.length > 0) {      // 验证密码      if (result[0].password === password) {        res.send({ status: 0, msg: '登录成功' });      } else {        res.send({ status: 0, msg: '密码错误' });      }    } else {      res.send({ status: 0, msg: '用户不存在' });    }  });});

5. 登录和注册逻辑

注册部分
  • 前台逻辑:用户在前端提交手机号,发送到后端。
  • 后端逻辑:检查数据库是否存在该手机号:
    • 存在:返回状态 0,提示用户已有账号。
    • 不存在:插入新用户,返回状态 0,提示注册成功。
  • 登录部分
  • 前台逻辑:用户提交手机号和密码,发送到后端。
  • 后端逻辑:检查数据库是否存在该手机号:
    • 存在:验证密码,如果正确返回状态 0,登录成功;否则返回密码错误提示。
    • 不存在:返回用户不存在提示。
  • 6. 启动服务器

    为了更高效地开发,我们可以使用 supervisor 来启动服务器。安装 supervisor:

    npm install supervisor -g

    然后启动服务器:

    supervisor bin/www

    打开浏览器,访问 http://127.0.0.1:3000 就可以看到你的项目页面。

    7. 项目目录结构

    以下是项目生成后的目录结构图:

    project/├── app.js          # Express 项目入口├── routes/│   ├── user.js     # 用户路由│   └── index.js    # 主路由├── config/│   ├── db.js      # 数据库配置│   └── user.js     # 用户表定义├── public/│   └── index.html  # 网页入口├── views/│   └── index.ejs   # 主页模板└── package.json   # 项目依赖

    8. Express 项目入口文件

    app.js 文件内容如下:

    const express = require('express');const router = express.Router();const db = require('./config/db');// 路由中间件router.use('/api', require('./routes'));const port = process.env.PORT || 3000;app.listen(port, () => {  console.log(`服务器运行在 http://localhost:${port}`);});

    9. MySQL 配置

    确保数据库已经安装,并创建用户数据库。使用 navicat 或其他数据库管理工具创建数据库连接:

  • 打开 navicat,创建新的数据库。
  • 使用以下SQL 语句创建用户表:
    CREATE TABLE users (    id INT PRIMARY KEY AUTO_INCREMENT,    phone VARCHAR(20) UNIQUE NOT NULL);
  • 10. 总结

    通过以上步骤,你已经成功搭建了一个基于 Node.js、Express 和 MySQL 的登录注册系统。虽然看起来简单,但实际开发中需要注意很多细节,包括数据库连接、前后端交互、错误处理等。熟悉这些流程对于后续开发非常重要。

    转载地址:http://zijfk.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置自带的stub状态实现活动监控指标
    查看>>
    nginx配置详解、端口重定向和504
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>
    Nginx配置限流,技能拉满!
    查看>>
    Nginx配置静态代理/静态资源映射时root与alias的区别,带前缀映射用alias
    查看>>
    Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
    查看>>
    Nginx:NginxConfig可视化配置工具安装
    查看>>
    ngModelController
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    ngrok内网穿透可以实现资源共享吗?快解析更加简洁
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>