900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Node.js连接数据库 实现注册 登录 判断注册

Node.js连接数据库 实现注册 登录 判断注册

时间:2022-09-24 21:43:19

相关推荐

Node.js连接数据库 实现注册 登录 判断注册

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');//引入httpvar querystring = require('querystring'); var url = require('url'); //引入urlvar 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-----------------');});};});

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

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

!

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。