express+mysql+vue,从零搭建一个商城管理系统5--用户注册
提示:学习express,搭建管理系统
文章目录
- 前言
- 一、新建user表
- 二、安装bcryptjs、MD5、body-parser
- 三、修改config/db.js
- 四、新建config/bcrypt.js
- 五、新建models文件夹和models/user.js
- 五、index.js引入使用body-parser
- 六、修改routes/user.js
- 七、启动项目
- 八、配置Apipost接口/user/register
- 九、访问/user/register
- 总结
前言
需求:主要学习express,所以先写service部分
一、新建user表
1、express_service数据库,鼠标右键点击表

2、点击新建表

3、创建user表

3、ctrl+s保存,输入user,点击确认


4、设计表添加栏位userID、userName、password



二、安装bcryptjs、MD5、body-parser
bcryptjs是对密码进行加密的插件
body-parser对http请求进行解析
npm install bcryptjs --save

npm install md5 --save

npm install body-parser --save

三、修改config/db.js
const mysql = require('mysql');
const pool = mysql.createPool({host:'localhost',ipport:'3306',user:'root',password:'123456',database:'express_service'
});const query = (sql,params,callback)=>{return new Promise((resolve,reject)=>{pool.getConnection((err,connect)=>{if(err) reject(err);connect.query(sql,params,(err,result)=>{if(err) reject(err);return resolve(result);});});});
}
module.exports = query;

四、新建config/bcrypt.js
bcrypt.js
const bcryptJs = require('bcryptjs');const bcrypt = {hash:(txt,salt=9)=>{return bcryptJs.hashSync(txt,salt);},compare:(txt,hash)=>{return bcryptJs.compareSync(txt,hash);},
}module.exports = bcrypt;

五、新建models文件夹和models/user.js
user.js
const query = require('../config/db');
const bcrypt = require('../config/bcrypt');
const md5 = require('md5');
const secretKey = 'longlongago';const errFun = (msg,code)=>{return {code:code||500,success:false,msg:msg||'操作失败'}
}const sucFun = (data,msg)=>{return {code:200,success:true,msg:msg||'操作成功',data,}
}const userDao = {register:async(data)=>{//这里只添加user到数据库,不做验证和检验const userId = md5(data.userName+secretKey);const password = bcrypt.hash(data.password+secretKey);const sql = `insert into user (userId,userName,password) values('${userId}','${data.userName}','${password}')`;const result = await query(sql);console.log(result)// return result;if(result&&result.affectedRows==1)return sucFun(result[0],'添加用户成功');return errFun('添加用户失败');},
}module.exports = userDao;

五、index.js引入使用body-parser
const express = require('express');const app = express();
const router = express.Router();const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());const port = 1990;require('./config/db');//初始化路由
require('./routes/index')(router);app.use('/', router);
app.listen(port,()=>{console.log('http://localhost:'+port);
})

六、修改routes/user.js
const userDao = require('../models/user');
const userRoutes = (router)=>{router.post('/user/register',async (req,res)=>{const result = await userDao.register(req.body);res.json(result);});
}
module.exports = userRoutes;

七、启动项目
npm run dev

八、配置Apipost接口/user/register
使用到的工具是Apipost
1、新建目录

2、目录命名express_service

3、鼠标右键点击express_service,新建user子目录


4、右键点击user子目录,新建接口

5、接口配置
url:http://localhost:1990/user/register
name:/user/register
params:{
“userName”:“longlongago”,
“password”:“123456”
}

九、访问/user/register


总结
踩坑路漫漫长@~@
相关文章:
express+mysql+vue,从零搭建一个商城管理系统5--用户注册
提示:学习express,搭建管理系统 文章目录 前言一、新建user表二、安装bcryptjs、MD5、body-parser三、修改config/db.js四、新建config/bcrypt.js五、新建models文件夹和models/user.js五、index.js引入使用body-parser六、修改routes/user.js七、启动项…...
canvas水波纹效果,jquery鼠标水波纹插件
canvas水波纹效果,jquery鼠标水波纹插件 效果展示 jQuery水波纹效果,canvas水波纹插件 HTML代码片段 <div class"scroll04wrap"><h3>发展历程</h3><div class"scroll04"><p>不要回头,一…...
Zookeeper客户端命令、JAVA API、监听原理、写数据原理以及案例
1. Zookeeper节点信息 指定服务端,启动客户端命令: bin/zkCli.sh -server 服务端主机名:端口号 1)ls / 查看根节点下面的子节点 ls -s / 查看根节点下面的子节点以及根节点详细信息 其中,cZxid是创建节点的事务id,…...
[嵌入式系统-34]:RT-Thread -19- 新手指南:RT-Thread标准版系统架构
目录 一、RT-Thread 简介 二、RT-Thread 概述 三、许可协议 四、RT-Thread 的架构 4.1 内核层: 4.2 组件与服务层: 4.3 RT-Thread 软件包: 一、RT-Thread 简介 作为一名 RTOS 的初学者,也许你对 RT-Thread 还比较陌生。然…...
postman访问k8s api
第一种方式: kubectl -n kubesphere-system get sa kubesphere -oyaml apiVersion: v1 kind: ServiceAccount metadata:annotations:meta.helm.sh/release-name: ks-coremeta.helm.sh/release-namespace: kubesphere-systemcreationTimestamp: "2023-07-24T07…...
UE4c++ ConvertActorsToStaticMesh
UE4c ConvertActorsToStaticMesh ConvertActorsToStaticMesh UE4c ConvertActorsToStaticMesh创建Edior模块(最好是放Editor模块毕竟是编辑器代码)创建UBlueprintFunctionLibraryUTestFunctionLibrary.hUTestFunctionLibrary.cpp:.Build.cs 目标:为了大量…...
Qt中tableView控件的使用
tableView使用注意事项 tableView在使用时,从工具栏拖动到底层页面后,右键进行选择如下图所示: 此处需要注意的是,需要去修改属性,从UI上修改属性如下所示: 也可以通过代码修改属性: //将其设…...
【医学影像】LIDC-IDRI数据集的无痛制作
LIDC-IDRI数据集制作 0.下载0.0 链接汇总0.1 步骤 1.合成CT图reference 0.下载 0.0 链接汇总 LIDC-IDRI官方网址:https://www.cancerimagingarchive.net/nbia-search/?CollectionCriteriaLIDC-IDRINBIA Data Retriever 下载链接:https://wiki.canceri…...
MacOS开发环境搭建详解
搭建MacOS开发环境需要准备相应的软硬件,并遵循一系列步骤。以下是详细的步骤: 软硬件准备: MacOS电脑:确保你的电脑运行的是MacOS操作系统。Xcode软件:打开AppStore,搜索并安装Xcode。安装过程可能较长&…...
全量知识系统问题及SmartChat给出的答复 之2
Q6. 根据DDD的思想( 也就是借助 DDD的某个或某些实现),是否能按照这个想法给出程序设计和代码结构? 当使用领域驱动设计(DDD)的思想来设计程序和代码结构时,可以根据领域模型、领域服务、值对象、实体等概念来进行设计…...
嵌入式驱动学习第一周——vim的使用
前言 本篇博客学习使用vim,vim作为linux下的编辑器,学linux肯定是绕不开vim的,因为不确定对方环境中是否安装了编译器,但一定会有vim。 对于基本的使用只需要会打开文件,保存文件,编辑文件即可。 嵌入式驱动…...
loop_list单向循环列表
#include "loop_list.h" //创建单向循环链表 loop_p create_head() { loop_p L(loop_p)malloc(sizeof(loop_list)); if(LNULL) { printf("create fail\n"); return NULL; } L->len 0; L->nextL; retur…...
Python爬虫实战第二例【二】
零.前言: 本文章借鉴:Python爬虫实战(五):根据关键字爬取某度图片批量下载到本地(附上完整源码)_python爬虫下载图片-CSDN博客 大佬的文章里面有API的获取,在这里我就不赘述了。 一…...
Eclipse是如何创建web project项目的?
前面几篇描述先后描述了tomcat的目录结构和访问机制,以及Eclipse的项目类型和怎么调用jar包,还有java的main函数等,这些是一些基础问题,基础高清出来才更容易搞清楚后面要说的东西,也就是需求带动学习,后面…...
Excel的中高级用法
单元格格式,根据数值的正负分配不同的颜色和↑ ↓ 根据数值正负分配颜色 2-7 [蓝色]#,##0;[红色]-#,##0 分配颜色的基础上,根据正负加↑和↓ 2↑-7↓ 其实就是在上面颜色的代码基础上加个 向上的符号↑,或向下的符号↓ [蓝色]#,##0↑;[红色…...
【ArcGIS】基本概念-空间参考与变换
ArcGIS基本概念-空间参考与变换 1 空间参考与地图投影1.1 空间参考1.2 大地坐标系(地理坐标系)1.3 投影坐标系总结 2 投影变换预处理2.1 定义投影2.2 转换自定义地理(坐标)变换2.3 转换坐标记法 3 投影变换3.1 矢量数据的投影变换…...
Qt QWidget 简约美观的加载动画 第五季 - 小方块风格
给大家分享两个小方块风格的加载动画 😊 第五季来啦 😊 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…...
针对KZG承诺和高效laconic OT的extractable witness encryption
1. 引言 2024年以太坊基金会等成员论文 Extractable Witness Encryption for KZG Commitments and Efficient Laconic OT,开源代码实现见: https://github.com/rot256/research-we-kzg(Rust) 在该论文中,提供了一种…...
Spring Boot中实现列表数据导出为Excel文件
点击下载《Spring Boot中实现列表数据导出为Excel文件》 1. 前言 本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能,并解释其背后的原理、提供完整的流程和步骤,以及带有详细注释的代码示例。最…...
华为ipv6 over ipv4 GRE隧道配置
思路: PC1访问PC2时,会先构造源ipv6为2001:1::2,目的IPV6为2001:2::2的ipv6报文,然后查看PC1的路由表,发送到R1,r1接收后,以目的IPV6地址2001:2::2查询IPV6路由表,出接口为tun0/0/0…...
终极docker2exe错误码手册:快速解决容器转可执行文件的常见问题
终极docker2exe错误码手册:快速解决容器转可执行文件的常见问题 【免费下载链接】docker2exe Convert a Docker image to an executable 项目地址: https://gitcode.com/GitHub_Trending/do/docker2exe docker2exe是一款强大的工具,能够将Docker镜…...
如何用May协程库5分钟构建高性能并发服务器
如何用May协程库5分钟构建高性能并发服务器 【免费下载链接】may rust stackful coroutine library 项目地址: https://gitcode.com/gh_mirrors/ma/may May是一个轻量级的Rust栈式协程库,能帮助开发者轻松构建高性能的并发服务器。本文将带你快速上手&#x…...
【反蒸馏实战 14】BI工程师:从报表开发者到数据架构师@BI工程师反蒸馏进化论(附 Python/SQL 完整代码)
摘要:2026年Agentic BI全面爆发,业务人员借助AI问数工具3分钟即可完成传统BI工程师半天的工作,报表开发、SQL取数等基础岗位需求同比下降26%,但具备数据架构设计、数据治理能力的BI工程师薪资高达18.2K/月(较纯报表工程师溢价30%)。本文基于真实企业场景,通过3个完整实战…...
SketchUp选择工具全解析:从点选到反选,6种技巧提升建模效率
SketchUp选择工具全解析:从点选到反选,6种技巧提升建模效率 在三维建模的世界里,精确选择是高效创作的基石。就像雕塑家需要精准控制每一处凿刻的力度和位置,SketchUp用户也必须掌握选择工具的精髓。许多中级用户虽然能完成基础建…...
SDUT-python实验一编程题
7-1 sdut-入门-买糖果分数 10作者 周雪芹单位 山东理工大学小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了。糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多…...
ABC软件工具箱选购与使用全攻略:从入门到精通的最佳实践
对于初次接触ABC软件工具箱的用户来说,面对120项功能可能会感到有些不知所措。 本文将为您提供一份详细的使用指南,帮助您快速了解软件的核心功能,掌握基本操作技巧,并学会如何根据实际需求选择合适的功能组合。 初次使用ABC软件…...
Bidili Generator图片生成工具:5分钟快速部署,小白也能玩转SDXL定制化AI绘画
Bidili Generator图片生成工具:5分钟快速部署,小白也能玩转SDXL定制化AI绘画 1. 引言:让AI绘画变得简单 你是否曾经羡慕那些能够用AI生成精美图片的技术达人?现在,这一切变得前所未有的简单。Bidili Generator是一款…...
避坑指南:STM32外部中断控制LED,你的按键消抖真的做对了吗?(附CubeIDE配置详解)
STM32外部中断实战:从按键消抖到系统级事件处理的进阶之路 按键消抖这个看似简单的技术细节,往往是嵌入式开发者遇到的第一个"玄学"问题。当你按下按键,LED却闪烁不定;当你快速连续按键,系统却毫无反应&…...
Ubuntu双屏不识别?手把手教你用xorg.conf文件搞定NVIDIA双显卡输出
Ubuntu双屏显示配置实战:NVIDIA双显卡环境下的xorg.conf深度解析 刚给笔记本外接第二块显示器时,发现系统死活识别不出来——xrandr里始终显示"HDMI disconnected",而NVIDIA控制面板里也找不到任何多屏配置选项。这种问题在搭载NVI…...
3步快速上手VTube Studio API:打造专属虚拟主播互动插件
3步快速上手VTube Studio API:打造专属虚拟主播互动插件 【免费下载链接】VTubeStudio VTube Studio API Development Page 项目地址: https://gitcode.com/gh_mirrors/vt/VTubeStudio 你是否想让虚拟主播根据弹幕做出反应?或者让模型跟随音乐节奏…...
