二、nodejs连接数据库实现登录功能

// 数据库下载可以用这个

DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具_dbeaver使用教程-CSDN博客

模块化

(1)新建一个叫Dao的文件夹,存接数据库代码

// 参考数据库

(2)下载依赖

npm install mysql

(3)写连接数据库代码

数据库密码不能用123456,不安全

模块化要用中间件的写法

中间件语法
var app = express();
app.use(function (req, res, next) {next();
})

Dao->index.js

/*** 数据库连接*/
const mysql = require('mysql');
const DataBase = mysql.createConnection({host: 'localhost',user: '用户名',password: '密码',database: '数据库名字',
})
//连接方法异步
const goconnect = ()=>{DataBase.connect();setTimeout(()=>{console.log('数据库连接成功');},2000)
}
//暴露出数据库去
module.exports={connect:goconnect,db:DataBase}

(4)写接口文件

创建文件1

const express = require('express')
const router = express.Router()
router.get('login/', (req, res) => {})
module.exports = router

创建文件2

const express = require('express');
const router = express.Router();
const Dao = require('../Dao/index');
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{console.log(result,'用户名密码');})res.send('hello')
})
module.exports = router

(5)在index里进行管理和使用

/*** 1.引入一个express框架* 2.在加载所有服务模块前,要先连接数据库* 安装body-parser中间件解析JSON数据,引入*/
const express = require('express');
const app = express();
const DataBase = require('./Dao/index');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
DataBase.connect();//连接数据库
/**
* 3.中间件,使用Service的接口 发送网络请求
*/
app.use('/api/Login',require('./Service/login'))
app.use('/api/User',require('./Service/user'))
/**
* 4.规定服务的端口号
*/
app.listen(3000,()=>{console.log('server is running at http://localhost:3000');
})

(6)router的使用

const express = require('express');
//引用定义router
const router = express.Router();
//连接数据库
const Dao = require('../Dao/index');
//获取数据库的用户名密码等逻辑
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{console.log(result,'用户名密码');})res.send('hello')
})
module.exports = router

(7)测试

测试成功

(8)实现登录

user.js

const express = require('express');
const router = express.Router();
const Dao = require('../Dao/index');
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{// console.log(result,'用户名密码');if(req.body.password == result[0].password){res.send({code:200,data:{msg:'登录成功',data:result}})}else{res.send({code:200,data:{msg:'登录失败',data: []}      })}})
})
module.exports = router

测试返回(一定看好是不是数据库表内的账号密码)

(9)功能实现

import axios from "./request";
//这是首页数据的接口
export const getApiHomeData=(param)=>{return axios.request({url:'/home/getHomeData',method:'get',data:param})
}
export const login = (data)=>{return axios.request({url:'/api/User/login',method:'post',data:data})
}

登录页面参数引入

  import { login } from '../../api/api'
        const onSubmit = async value => {const res = await login({username:data.username,password:data.password})console.log(res,"登录日志");if(res.msg==='登录成功'){router.push('/')Toast('登录成功')}else{Toast('用户名或密码错误')}};

报了跨越的错误

解决方法

在nodejs内允许访问域名,header,和跨域的请求的方式

index.js

/*** 1.引入一个express框架* 2.在加载所有服务模块前,要先连接数据库* 安装body-parser中间件解析JSON数据*/
const express = require('express');
const app = express();
const DataBase = require('./Dao/index');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
DataBase.connect();//连接数据库
/*** 3.中间件,使用Service的接口 发送网络请求*/
/**配置公共请求响应头 */
app.all('*',(req,res,next)=>{// console.log('请求进来了');res.header("Access-Control-Allow-Origin","*");//允许跨域域名res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');//允许跨域的header类型res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");//允许跨域的请求方式next();
})
app.use('/api/Login',require('./Service/login'))
app.use('/api/User',require('./Service/user'))
app.use('/api/home',require('./Service/home'))/*** 4.规定服务的端口号*/
app.listen(3000,()=>{console.log('server is running at http://localhost:3000');})

启动

node .\index.js

登录成功

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

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

相关文章

自动驾驶-第02课软件环境基础(ROSCMake)

1. 什么是ros 2. 为什么使用ros 3. ROS通信 3.1 Catkin编译系统

prometheus的安装与部署及其有点

一、Prometheus 的优点 1、非常少的外部依赖,安装使用超简单; 2、已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等; 3、服务自动化发现; 4、直接集成到代码; 5、设计思想是按照分布式、微服…

Flutter笔记:Widgets Easier组件库(10)快速处理承若型对话

Flutter笔记 使用Widgets Easier组件库快速处理承若型对话 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…

小程序账号设置以及request请求的封装

一般开发在小程序时,都会有测试版和正式版,这样在开发时会比较方便。 在开发时。产品经理都会给到测试账号和正式账号,后端给的接口也都会有测试环境用到的接口和正式环境用到的接口。 这里讲一讲我这边如何去做的。 1.在更目录随便命名一…

一机游领航旅游智慧化浪潮:借助前沿智能设备,革新旅游服务效率,构建高效便捷、生态友好的旅游服务新纪元,开启智慧旅游新时代

目录 一、引言 二、一机游的定义与特点 (一)一机游的定义 (二)一机游的特点 三、智能设备在旅游服务中的应用 (一)旅游前的信息查询与预订支付 (二)旅游中的导航导览与互动体…

MATLAB中功率谱密度计算pwelch函数使用详解

MATLAB中功率谱密度计算pwelch函数使用详解 目录 前言 一、pwelch函数简介 二、pwelch函数参数说明 三、pxx pwelch(x)示例 四、[pxx,f]pwelch(x,window,noverlap,nfft,fs)示例 四、[pxx,f] pwelch(x,window,noverlap,nfft,fs,freqrange,spectrumtype)示例 五、多通道功…

Springboot(SSM)项目实现数据脱敏

目录 一、引入hutool的依赖 二、sql脚本 三、自定义注解代码 3.1 自定义注解 3.2 自定义一个枚举,用于定义脱敏的类型 3.3 序列化 四、使用脱敏注解 4.1 Person.java 4.2 controller 4.3 dao 五、源代码参考 一、引入hutool的依赖 <dependency><groupId>…

FIFO Generate IP核使用——Native读写接口信号详解

Native FIFO接口信号是用于FIFO IP核与外部电路进行通信的信号。当FIFO支持独立的写和读时钟时&#xff0c;这些信号可以包括标准端口和可选端口。 1 当FIFO具有独立时钟时的接口信号 当FIFO具有独立的时钟时&#xff0c;其接口信号会相应地有所变化。特别是关于复位信号rst…

计算机等级考试2级(Python)知识点整理

计算机等级考试2级&#xff08;Python&#xff09;知识点整理 1.基础知识点&#xff08;记忆、理解&#xff09; 第1讲Python概述 01. 源代码 02. 目标代码 03. 编译和解释 04. 程序的基本编写方法 第2讲 Python语言基础&#xff08;一&#xff09; 01. 用缩进表示代码…

[数据结构]——非比较排序—计数排序

该篇文章 所涉及代码收录仓库&#xff1a;登录 - Gitee.com 目录 1.非比较排序——计数排序 2.最终实现 1.解析 2.以int a[] { 1,3,9,1,5,1,2,3,-5,-5,-2 };为例&#xff0c;手撕分析 3.代码实现 4.计数排序具有以下主要特性&#xff1a; 1.非比较排序——计数排序 思想…

Linux IP Forwarding路由转发实验

linux 路由转发功能 Linux 操作系统具备路由转发功能&#xff0c;路由功能是指 Linux 操作系统提供的路由管理和转发功能&#xff0c;它允许 Linux 主机在网络中正确地转发数据包&#xff0c;并确保数据包能够达到其目的地。 出于安全考虑&#xff0c;Linux系统默认是禁止数据…

ICode国际青少年编程竞赛- Python-1级训练场-for循环入门

ICode国际青少年编程竞赛- Python-1级训练场-for循环入门 1、 for i in range(4):Dev.step(4)Dev.turnLeft()2、 for i in range(3):Dev.step(6)Dev.turnRight()3、 for i in range(3):Dev.turnRight()Dev.step(2)Dev.turnLeft()Dev.step(-3)4、 for i in range(4):Dev…

数字旅游以科技创新为核心竞争力:推动旅游服务的智能化、高效化,满足游客日益增长的旅游需求

一、引言 随着科技的飞速发展&#xff0c;数字旅游作为旅游业与信息技术结合的产物&#xff0c;正以其独特的魅力改变着传统旅游业的格局。科技创新作为数字旅游的核心竞争力&#xff0c;不仅推动了旅游服务的智能化、高效化&#xff0c;更满足了游客日益增长的旅游需求。本文…

香港理工大学内地事务总监陆海天教授确认出席“边缘智能2024 - AI开发者峰会”并发表主题演讲

隨著AI技術的日新月異&#xff0c;我們正步入一個邊緣計算智能化與分布式AI相互融合的新紀元。這一變革不僅推動了分布式智能創新應用的飛速發展&#xff0c;還使得邊緣智能——這一結合邊緣計算和智能技術的新興領域&#xff0c;逐漸成為引領AI發展的重要力量。通過其分布式和…

clang:在 Win10 上编译 MIDI 音乐程序(二)

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占…

走进香港美食宛如走进香港电影

&#xff08;1&#xff09; 过去蔡澜有个节目&#xff0c;专门介绍香港美食&#xff0c;身边美女相伴、眼里美景相随。 过去离香港海关近&#xff0c;有时候散步都能走到那里&#xff0c;打车时车都不蹦字儿。那时候精神头儿真好&#xff0c;周六一早6点就起来拖着大箱子过关&a…

软件测试(实验五)——Jmeter的使用

目录 实验目的 一、使用JMeter演示取样器、监听器、配置元件、断言的使用&#xff1b; 1、取样器 2、监听器 3、配置元件的使用 ① 用户定义的变量 ②HTTP信息头管理器 ③HTTP请求默认值 ④CSV数据文件设置 4、断言 ①响应断言 ②JSON断言 ③断言持续时间 二、使用…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

Flask教程2:flask高级视图

文章目录 add_url_rule类视图的引入装饰器的自定义与使用蓝图的使用url_prefix设置蓝图前缀 add_url_rule 欲实现url与视图函数的绑定&#xff0c;除了使用路由装饰器app.route&#xff0c;我们还可以通过add_url_rule(rule,endpointNone,view_funcNone)方法&#xff0c;其中&…

头歌实践教学平台:投影变换v2.0

第4关&#xff1a;视口变换与三视图 一. 任务描述 1. 本关任务 (1) 理解投影变换的方法; (2) 将main函数中的空白部分补充完整。 2. 输入 (1) 代码将自动输入一个边长为1的obj正方体模型&#xff0c;具体模型如下图&#xff1a; (2) 代码自动将模型投影到二维平面&#xf…