3. node+mysql+express完整项目-文章管理平台 (1)

本文介绍了如何使用Node.js、Express和MySQL搭建一个文章管理平台,涵盖了项目初始化、配置跨域和解析表单数据的中间件、用户登录注册的详细步骤,包括用户数据验证、密码加密、JWT Token的生成和验证。
摘要由CSDN通过智能技术生成

cnpm install --save express cors mysql body-parser bcryptjs joi @escook/express-joi jsonwebtoken express-jwt multer

一、项目初始化

1.1 创建项目

  1. 新建 service_mytest 文件夹作为项目根目录,并在项目根目录中运行命令 npm init -y,初始化包管理配置文件。

image.png

  1. 运行命令 cnpm install --save express (会保存到)

或安装特定版本的 express:npm i express@4.17.1

  1. 在项目根目录中新建 index.js 作为整个项目的入口文件,并初始化如下的代码:
const express = require('express')
// 创建 express 的服务器实例
const app = express()

//指定端口为环境变量PORT中的内容,如果没有,则为8888
const port = process.env.PORT || 8888;

// write your code here...

// 调用 app.listen 方法,指定端口号并启动web服务器
/* app.listen(8000, function () {
  console.log('server running on port http://127.0.0.1:8000')
}) */

app.listen(port, () => {
   
    console.log(`server running on port ${
     port}`);
  }); 

1.2 配置 cors 跨域

  1. 运行命令 cnpm install --save cors,安装 cors 中间件。

或 npm i cors@2.8.5

  1. 在 index.js 中导入并配置 cors 中间件:
const cors = require('cors')

app.use(cors())

1.3 配置解析表单数据的中间件

  1. 运行命令cnpm install --save body-parser
const bodyParser = require("body-parser");


//通过如下的代码,配置解析 application/x-www-form-urlencoded 格式的表单数据的中间件:
app.use(express.urlencoded({
    extended: false }));
//通过如下的代码,配置解析 application/json格式的表单数据的中间件:
app.use(bodyParser.json());

1.4 初始化路由相关的文件夹

  1. 在项目根目录中,新建 router 文件夹,用来存放所有的路由模块

路由模块中,只存放客户端的请求与处理函数之间的映射关系

  1. 在项目根目录中,新建 router_handler 文件夹,用来存放所有的 路由处理函数模块

路由处理函数模块中,专门负责存放每个路由对应的处理函数

1.5 初始化用户路由模块

  1. 在 router 文件夹中,新建 user.js 文件,作为用户的路由模块,并初始化代码:
const express = require('express')
// 创建路由对象
const router = express.Router()

// 注册新用户
router.post('/reguser', (req, res) => {
   
  res.send('reguser OK')
})

// 登录
router.post('/login', (req, res) => {
   
  res.send('login OK')
})

module.exports = router
  1. index.js 中,导入注册用户路由模块 :
const userRouter = require('./router/user')
app.use('/api', userRouter)

1.6 抽离用户路由模块中的处理函数

目的:为了保证 路由模块 的纯粹性,所有的 路由处理函数,必须抽离到对应的 路由处理函数模块 中

  1. 在 /router_handler/user.js 中,使用 exports 对象,分别向外共享如下两个 路由处理函数 :
/**
 * 在这里定义和用户相关的路由处理函数,供 /router/user.js 模块进行调用
 */

// 注册用户的处理函数
exports.regUser = (req, res) => {
   
  res.send('reguser OK')
}

// 登录的处理函数
exports.login = (req, res) => {
   
  res.send('login OK')
}
  1. 将 /router/user.js 中的代码修改为如下结构:
const express = require('express')
const router = express.Router()

// 导入用户路由处理函数模块
const userHandler = require('../router_handler/user')

// 注册新用户
router.post('/reguser', userHandler.regUser)
// 登录
router.post('/login', userHandler.login)

module.exports = router

二. 登录注册

2.1 新建 ev_users 表

  1. 在 test 数据库中,新建 ev_users 表如下:

image.png
image.png

2.2 安装并配置 mysql 模块

  1. 运行命令 cnpm install --save mysql , 安装 mysql 模块,

或npm i mysql@2.18.1

  1. 在项目根目录中新建 /db/index.js 文件,在此自定义模块中创建数据库的连接对象:
const mysql = require('mysql'); //createPool
// options参数包含createConnection方法中可以使用的各种属性
// 创建数据库连接对象
db = mysql.createConnection({
   
  host:'127.0.0.1',
  user: 'root',
  password: '123456',  // 修改为你的密码
  port: '3306',
  database: 'test'  // 请确保数据库存在
});
//db.connect();
// 向外共享 db 数据库连接对象
module.exports = db;

2.3 注册

实现步骤
  1. 检测表单数据是否合法
  2. 检测用户名是否被占用
  3. 对密码进行加密处理
  4. 插入新用户

2.3.1 检测表单数据是否合法

  1. 判断用户名和密码是否为空: /router_handler/user.js
// 注册用户的处理函数
exports.regUser = (req, res) => {
   
  // 接收表单数据
  const userinfo = req.body
  // 判断数据是否合法
  if (!userinfo.username || !userinfo.password) {
   
    return res.send({
    status: 1, message: '用户名或密码不能为空!' })
  }
  
  res.send('reguser OK')
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值