【Node.js】mysql 操作 MySQL 数据库

实际案例

db/index.js

const mysql = require('mysql')// 创建数据库的连接
const db = mysql.createPool({host: 'localhost',user: 'root',password: 'hxg20021126',database: 'management-pro'
})module.exports = db

LoginController.js

const db = require('../db/index')
const bcrypt = require("bcrypt");
const jwt = require('jsonwebtoken')
const jwtConfig = require('../config/JwtConfig')const register = (req, res) => {let {account, password} = req.body// 1. 非空和有效性校验if (!account || !password) {return res.send({code: 1,message: '账号或者密码为空'})}// 2. 账号是否已经存在// 参数: 执行语句 参数 回调函数处理结果db.query('select * from users where account = ?', account, (err, result) => {if (result.length > 0) {return res.send({code: 1,message: '账号已存在'});}// 3. 对注册的密码进行加密 参数: 值 加密后的长度password = bcrypt.hashSync(password, 10)// 4. 将账号和密码插入users表db.query('insert into users set ?', {account,password,identity: '用户',create_time: new Date(),status: 0}, (err, result) => {if (result.affectedRows !== 1) {//affectedRows 影响行数不唯一(没有影响到行数) 即插入失败return res.send({code: 1,message: '账号注册失败'})}res.send({code: 0,message: '账号注册成功'})})})}
const login = (req, res) => {const {account, password} = req.body// 查看数据库有无前端传过来的账号db.query('select * from users where account = ?', account, (err, result) => {// 一般会在数据库断开是执行失败if (err) return res.cc(err)if (result.length !== 1) return res.cc('未查询到数据,登录失败')// 对前端传过来的密码进行对比校验const compareResult = bcrypt.compareSync(password, result[0].password)if (!compareResult) {return res.cc('密码错误,登录失败')}// 对账号是否冻结做判定if (res[0].status === 1) {return res.cc('账号已被冻结')}// 返回token 给前端const user = {...result[0],password: '',imageUrl: '',create_time: '',update_time: ''}//生成token 设置有效时长为 6 个小时const tokenStr = jwt.sign(user, jwtConfig.jwtSecretKey, {expiresIn: '6h'})res.send({result: result[0],code: 0,message: '登录成功',token: 'Bearer ' + tokenStr})})
}
module.exports = {register,login
}

快速使用

var mysql      = require('mysql');
var connection = mysql.createConnection({host     : 'localhost',user     : 'root',password : '123456',database : 'test'
});connection.connect();connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {if (error) throw error;console.log('The solution is: ', results[0].solution);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/768334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划——线性dp

数字三角形 // 从上到下 #include <iostream> #include <algorithm> using namespace std; const int N 510, INF 1e9; int n; int a[N][N]; int f[N][N];int main() {scanf("%d", &n);for (int i 1; i < n; i )for (int j 1; j < i; j …

宝塔面板安装sqlite

宝塔面板是一个非常流行的服务器管理面板&#xff0c;它提供了许多方便的功能来管理服务器和网站。但是&#xff0c;默认情况下&#xff0c;宝塔面板不支持SQLite数据库的安装和管理。SQLite是一个轻量级的嵌入式数据库&#xff0c;它在很多应用程序中被广泛使用。如果你需要在…

计算机组成原理 CPU组成与机器指令执行实验

一、实验目的 (1)将微程序控制器同执行部件( 整个数据通路)联机&#xff0c;组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序&#xff0c;掌握机器指令与微指令的关系&#xff0c;牢固建立计算机的整机概…

深度学习pytorch——2D函数优化实例(持续更新)

课程&#xff1a;课时46 优化问题实战_哔哩哔哩_bilibili 这就是我们今天要求的2D函数&#xff1a; 下图是使用python绘制出来的图像&#xff1a; 但是可以看出有4个最小值&#xff0c;但是还是不够直观&#xff0c;还是看课程里面给的比较好&#xff0c;蓝色是最低点位置&am…

Python 全栈系列236 rabbit_agent搭建

说明 通过rabbit_agent, 以接口方式实现对队列的标准操作&#xff0c;将pika包在微服务内&#xff0c;而不必在太多地方重复的去写。至少在服务端发布消息时&#xff0c;不必再去考虑这些问题。 在分布式任务的情况下&#xff0c;客户端本身会启动一个持续监听队列的客户端服…

动态规划16 | ● 583. 两个字符串的删除操作 ● *72. 编辑距离

583. 两个字符串的删除操作 https://programmercarl.com/0583.%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.html 考点 子序列问题 我的思路 dp[i][j]的含义是&#xff0c;当两个字符串分别取前i和j个元素时&#xff0c;对应…

路由相关基本概念(IP入门)

IP协议--网络层--路由器、三层交换机&#xff08;冗余备份&#xff09; 路由器的功能&#xff1a; 1、构建和维护路由表 2、根据路由表进行转发 3、路由器接口划分广播域 路由--实现路由的设备&#xff08;路由器、多层交换机&#xff09; 协议&#xff1a;定义一种语言 路…

Django(一)- 环境搭建和快速入门

一、搭建环境 1、创建Python虚拟环境 (base) C:\Users\35351>conda create -n django_study python3.9 2、安装Django (django_study) C:\Users\35351>pip install Django >> 查看安装版本 (django_study) C:\Users\35351>python -m django --version 3、安…

数据分析与挖掘

数据起源&#xff1a; 规模庞大&#xff0c;结构复杂&#xff0c;难以通过现有商业工具和技术在可容忍的时间内获取、管理和处理的数据集。具有5V特性&#xff1a;数量&#xff08;Volume&#xff09;&#xff1a;数据量大、多样性&#xff08;Variety&#xff09;&#xff1a…

CSS(二)

一、CSS 的复合选择器 1.1 什么是复合选择器 在 CSS 中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形成的。 复合选择器可以更准确、更高效的选择目标元素&#xff…

Mockito.when返回的list长度为0问题解决方法

今天玩Mockito.when遇见一个问题Mockito.when返回的list长度为0&#xff1b;上代码 ArrayList<Org> childDepts new ArrayList<>();Org org new Org();org.setDeptId("1");org.setDeptName("1");childDepts.add(org); Mockito.when(orgMappe…

系统设计之缓存(Caches)和内容分发网络(CDNs)设计

系统设计之缓存(Caches)和内容分发网络(CDNs)设计 目录 系统设计之缓存(Caches)和内容分发网络(CDNs)设计缓存不同的缓存策略1. 浏览器缓存缓存命中和缓存未命中2. 服务器缓存缓存失效淘汰策略:缓存的决策制定者自适应策略自定义策略淘汰策略的影响3. 数据库缓存实现工…

OC对象 - 关联对象(如何给分类添加成员变量)

文章目录 OC对象 - 关联对象&#xff08;如何给分类添加成员变量&#xff09;1. 基本使用1.1 提供的API1.1.1 添加关联对象1.1.2 获得关联对象1.1.3 移除所有关联对象1.1.3 修饰符 1.2 使用方法1.2 Key的常见用法1.2.1 使用的get方法的selecor作为key1.2.2 使用指针的地址作为k…

100 天机器学习指南

100 天机器学习指南 除了机器学习专栏&#xff0c;我们打算出另外一期专栏&#xff0c;叫做100 天机器学习指南&#xff0c;目标是通过100天的深入持续学习&#xff0c;让我们没有机器学习经验的人&#xff0c;也可以从事简单的机器学习工作&#xff0c;为职业生涯寻找增长点&…

LeetCode每日一题——移除链表元素

移除链表元素OJ链接&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这与之前的移除元素的题目很相似&#xff0c;那么我们同样可以用类似的做法&#xff08;双指针&#xff09;进行解题。但是这是一个链表删除&a…

微信小程序全局数据共享

文章目录 安装MobX相关的包根目录创建store文件夹&#xff0c;添加store.js文件绑定到页面中绑定到组件 mobx-miniprogram和mobx-miniprogram-bindings实现全局数据共享 mobx-miniprogram用来创建Store实例对象 mobx-miniprogram-bindings用来把Store中的共享数据或方法&…

树状数组原理和代码

树状数组 求下标的对应 求i管着的下标的范围 方法&#xff1a;拆掉最右侧的1然后1 到你自己 query sum 1-i的和 拆掉最右侧的1 再把下一个数值吸收到sum 重复这个过程直到全变0为止 add 方法&#xff1a;加上最右侧的1 到上限为止 lowbit方法 单点增加范围查询模板 #inc…

no main manifest attribute, in xxx.jar

找不到主类&#xff0c;如果是maven 项目&#xff0c;在pom.xml 指定主类 <mainClass>com.example.demo.Demo2Application</mainClass>还是不行的话&#xff0c;把 <skip>true</skip>去掉

请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?

请简单介绍一下Shiro框架是什么&#xff1f; Shiro框架是一个强大且灵活的开源安全框架&#xff0c;为Java应用程序提供了全面的安全解决方案。它主要用于身份验证、授权、加密和会话管理等功能&#xff0c;可以轻松地集成到任何Java Web应用程序中&#xff0c;并提供了易于理解…

nodejs+vue高校师资管理系统python-flask-django-php

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…