Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册。

准备工作 创建文件夹

此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可。

  • 使用npm进行mysql插件的安装,cmd黑窗口运行下列指令
npm install mysql --save

此指令运行完成,文件夹根目录出现node_modules文件

  • 黑窗口运行 npm init指令,出现package.json文件最终的根目录如下
  • 在根目录下新建http.js文件

开始引入模块,端口

  • 首先在http.js中引入相应模块、工具
var http = require('http');                    //引入http
var querystring = require('querystring');
var url = require('url');                      //引入url
var fs = require('fs');                        //引入文件管理
  • 创建一个可以访问的端口
http.createServer(function(req, res) {console.log('链接成功');_//向请求的客户端发送响应头res.writeHead(200,{'Content-Type': 'text/html; charset=urf-8'});res.end('hello word');
}).listen(3000)

注意:
此处的端口使用为3000,部分可能感觉自己数据库的端口是别的内容,此处要不要更换为数据库相应。在此处进行3000的端口是可以相应操作的,与数据库端口不一致不影响使用。

  • 检验是否成功:使用node运行http.js
    黑窗口运行指令
node http.js

运行完成,在指令下方会出现如下图:

并且在浏览器输入localhost:3000,进行相应页面会看到hello word

  • 出现上述两个结果意味着端口创建完成并且是可以成功访问的。

相关页面的操作

页面样式

  • 在根目录下创建三个页面
    index.html login.html regsiter.html
    最终的目录
  • 在index.html页面的body中插入如下内容
 <h1><a href="/login">登录</a><a href="/regsiter">注册</a></h1>
  • 在login.html页面的body中插入如下内容
    <h1>登录页面</h1><form method ="POST"> <p><label for="userName">用户名:</label><input type="text" id="userName" name="username" placeholder="请输入用户名"></p><p><label for="passWord">密&nbsp;&nbsp;&nbsp;&nbsp;码:</label><input type="text" id="passWord" name="password" placeholder="请输入密码"></p><input type="submit" ></form>
  • 在regsiter.html页面的body中插入如下内容
    <h1>注册页面</h1><form method ="POST"> <p><label for="userName">用户名:</label><input type="text" id="userName" name="username" placeholder="请输入用户名"></p><p><label for="passWord">密&nbsp;&nbsp;&nbsp;&nbsp;码:</label><input type="text" id="passWord" name="password" placeholder="请输入密码"></p><input type="submit" ></form>

页面路由构建

  • 在http.js进行修改
http.createServer(function(req, res) {if (req.url == '/favicon.ico') {return;     //加载图标也会被当做一次http请求};var pathname = url.parse(req.url).pathname;     //解析地址栏地址var body = '';
//使用fs文件管理读取相对应文件fs.readFile(pathname.substring(1) + '.html', function(err, data) {if (err) {   //如果错误存在说明文件不存在res.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});res.write('404页面不存在');} else {   //否则文件读取成功res.writeHead(200, {'Content-Type': 'text/html; charset=urf-8'});res.write(data);   //写入文件};res.end();})
}).listen(3000);

注意:
后端相关内容每进行更新一次要注意重新运行执行指令。

  • 运行执行指令,
node http.js
  • 检验
    在浏览器中输入localhost:3000/index进入页面

    点击登录和注册进行跳转页面,便为成功。

连接数据库

数据库的操作

  • 建表
CREATE DATABASE IF NOT EXISTS my_sql CHARACTER SET UTF8;USE my_sql;SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`UserName` varchar(64) NOT NULL COMMENT '用户名',`UserPass` varchar(64) NOT NULL COMMENT '用户密码',PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

开始连接

  • 在http.js中加入的相关连接代码
var mysql = require('mysql');     //引入mysql模块var mysql_user = {                 //编写数据库链接数据host: 'localhost',         //地址user: 'root',              //用户名password: '',              //密码 database: 'my_sql'         //要链接的数据库名字    就是开始创建的那个表的名字
};var connection = mysql.createConnection(mysql_user);    //建立数据库链接
connection.connect(function(err) {                     //链接数据库if (err) {      //链接错误执行console.log('[错误]' + err);connection.end();return;};console.log('链接成功');    //否则链接成功
});

此时重新执行node htt.js指令,同上方显示链接成功便可。

  • 修改http.js,查询数据库
http.createServer(function(req, res) {if (req.url == '/favicon.ico') {return;};var pathname = url.parse(req.url).pathname;var body = '';    //定义一个放post数据的变量req.on('data', function(chunk) {    //接受post参数并赋值给bodybody = '';body += chunk;body = querystring.parse(body);});fs.readFile(pathname.substring(1) + '.html', function(err, data) {if (err) {res.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});res.write('404页面不存在');} else {res.writeHead(200, {'Content-Type': 'text/html; charset=urf-8'});if (body) {    //如果body存在 说明进行了post请求switch (pathname) {   //判断登录还是注册case '/login':   //执行登录事件   并传入对应参数query.emit('login', body.username, body.password, connection);break;case '/regsiter':  //执行注册事件   并传入对应参数query.emit('regsiter', body.username, body.password, connection);break;}};res.write(data);};res.end();})
}).listen(3000);

登录事件

var Event = require('events').EventEmitter;    //引入事件模块
var query = new Event();                       //创建事件对象//绑定login事件  传入 username password  链接数据库对象
query.on('login', function(username, password, connection) {//编写sql查询语句;var find = 'SELECT * FROM userinfo WHERE UserName = ' + username;
//执行sql语句connection.query(find, function(err, result) {if (err) {   //链接失败 直接return;console.log('[错误]' + err);return;};if (result.length) {   //如果查到了数据console.log('------------start----------------');var string = JSON.stringify(result);var json = JSON.parse(string)[0];console.log(string)if (json.UserPass == password) {console.log('密码校验正确');} else {console.log('密码校验错误');}console.log('--------------end-----------------');} else {console.log('账号不存在')}})
})
  • 若进行登录是数据库中存储的数据,则检验成功,黑窗口上面显示

  • 若登录的数据为数据库中没有的数据,有账号不存在和密码错误等情况

注册事件

//定义注册事件    传入 username password  链接数据库对象
query.on('regsiter', function(username, password, connection) {//编写查询语句var find = 'SELECT * FROM userinfo WHERE UserName = ' + username;
//编写添加语句var insert = 'INSERT INTO userinfo (Id,UserName,UserPass) VALUES (0,?,?)';
//执行sql语句connection.query(find, function(err, result) {if (err) {   //链接失败 直接return;console.log('[错误]' + err);return;};if (result.length) {   //如果数据库返回数据 说明账号已存在console.log('账号已存在');return;} else {               //否则不存在   可以进行注册var inserInfo = [username, password];  //定义插入数据//执行插入数据语句connection.query(insert, inserInfo, function(err, result) {if (err) {   //链接失败 直接return;console.log('[注册错误]' + err);return;};console.log('------------start----------------');console.log('注册成功');console.log(result);console.log('--------------end-----------------');});};});

输入数据库中没有的数据进行注册

注册完成,数据库表中将会出现新注册的数据,同时黑窗口上面显示
!

到此便实现了与数据库的连接。

Node.js连接数据库 实现注册、登录、判断注册相关推荐

  1. 如何使用Node.js连接数据库

    创建数据库 在前面的文章中我们有手把手使用docker创建数据库,这里就直接沿用之前创建的数据库 首先启动docker,把之前的mysql容器运行起来 然后登入mysql客户端查看一下现有的数据库,以 ...

  2. html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互

    最近实现了Node.js当作后台,jQuery写前台AJAX代码的,实现用户登录和注册的功能,刷新了前后端交互的三观.特记录一下. 1.login.ejs实现form框架 用户名 密码 form不加m ...

  3. node.js学习day03 通过node.js连接数据库实现增删改查

    通过node.js连接mysql数据库实现增删改查 1. npm i mysql 导入mysql模块 2.熟悉数据库增删改查 3.建立连接 通过mysql.createPool 4.案例 const ...

  4. Node.js开发的后端登录注册

    1.需要用的包.库 npm i express@next   需要用express请求 文档链接 npm i mongoose mongDB数据库 可以自动创建你所需要的数据库 文档链接 密钥加密   ...

  5. node.js实现微信授权登录,最详细最简单小白教程。。

    使用到的中间件,如已安装请忽略 npm install express -g npm install request --save 首先想要微信授权,必须注册的有公众号,进入微信公众号平台-开发-开发 ...

  6. 用Android和node.js实现扫码登录

    实现思路 step 1: 网页端提供二维码 step 2: 手机端登录,并保存token,手机扫码后向网页端发送token step 3: 网页端通过jstoken解析token,向后端服务器获取用户 ...

  7. node.js 多个异步过程判断执行是否完成

    场景:想请求量较大的网络数据,比如想获取1000条结果,但数据处理速度慢,有超时的风险,可以分成10次处理,每次处理100条:所有请求完成后再统一进行处理. 这样的应用场景,可以这样处理: 方案一:判 ...

  8. Node.js 连接数据库

    操作数据库基本步骤 导入数据库文件 CREATE DATABASE `students` ;USE `students`;DROP TABLE IF EXISTS `stu`;CREATE TABLE ...

  9. node.js Lordofpomelo点击登录(login)终端提示成功,页面不跳转无反应

    firbug查看是因为webserver->public->js->lib->build->build.js文件出错 打开https://raw.githubuserco ...

最新文章

  1. mysql 数据库系统开发_MySQL------数据库系统概述
  2. wsl 或者window terminal 下出现Java 14 switch expressions unrecognized解决方法:升级java jdk到14 or later
  3. java web 应用目录
  4. iphone xh5打开ppt预览_教你如何用iPhone拍全景照片
  5. iis负载均衡与文件同步[网摘]
  6. 汇编语言(十)之最小偶数
  7. Python基础 —— sys 模块
  8. for each,for in,for of三者区别
  9. 什么是Code Review
  10. python怎么读取dat类型文件_基于python批量处理dat文件及科学计算方法详解
  11. mw150um 驱动程序win10_Intel网卡驱动Win10官方下载_Intel网卡驱动Win10专版64位官方安装版-华军软件园...
  12. 免费的MySQL数据库
  13. 数字图像处理——图像边缘检测
  14. Linux下vasp优化结构,VASP入门系列文章[6]结构优化
  15. 蓝桥杯_单片机_入门基础知识(七)_DS18b20
  16. vivado error 使用笔记
  17. oracle替换手机号中间的4位为*号(姓名,手机号,邮箱脱敏)
  18. Rate Limiting Algorithms (限流算法)
  19. 交换机和路由器到底有什么区别???
  20. 查看并修改Linux主机名命令hostname

热门文章

  1. unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新
  2. Win11 快捷键一览(部分实用)
  3. ABB机器人仿真软件robotstudio v6.08安装教程
  4. 疫情在家办公,正好趁老板不在搞搞副业,爽歪歪
  5. 超级浏览器的特色功能
  6. 4K Stogram for Mac,Instagram下载
  7. ESP32中继模式STA+AP共存
  8. mac 工作生活常用快捷键
  9. Tensorflow2.0图像预处理
  10. php客户端局域网ip地址,PHP在局域网中获取客户端计算机名、IP地址、MAC地址