Nodejs实现用户注册
1创建连接池对象
2导出连接池对象
/**
* 1.引入mysql模块
* 2.创建连接池对象
* 3.导出连接池对象
*/
const mysql = require('mysql');
var pool = mysql.createPool({
host:'localhost',
port:'3306',
user:'xxx',
password:'xxx',
database:'xxx',
connectionLimit:20
});
module.exports = pool;
1托管静态资源到public
2使用body-parser中间件
3使用路由器挂在到指定的位置
//引入express模块
const express = require('express');
//引入路由器
const userRouter = require('./routes/user.js');
const productRouter = require('./routes/product.js');
const myproRouter = require('./routes/mypro.js');
const demoRouter = require('./routes/demo.js');
const bodyParser = require('body-parser');
//创建web服务器
var server = express();
//监听端口
server.listen(8080);
//托管静态资源
server.use(express.static('public'));
server.use(express.static('ajaxdemo'));
server.use(express.static('mypro'));
server.use(express.static('js'));
server.use(express.static('css'));
server.use(express.static('bootstrap'));
server.use(express.static('img'));
//使用body-parser中间件
server.use(bodyParser.urlencoded({
extended:false
}));
//挂载路由器
server.use('/user',userRouter);
server.use('/demo',demoRouter);
1引入连接池模块
2创建路由器对象
3往路由器中添加路由
4在路由中使用连接池
5导出路由器
/*
1.引入express
2.创建路由器对象
3.添加路由
4.导出路由器
5.引入连接池对象
6.将数据插入到数据库中
*/
const express = require('express');
const pool = require('../pool.js');
var router = express.Router();
//查看所有数据
router.get('/sele', (req, res) => {
//验证数据是否为空
var obj = req.query;
//console.log('query',obj);
for(var key in obj) {
if(!obj[key]) {
res.send('数据不能为空');
return;
}
}
var sqlselect = 'select * from xxx';
pool.query(sqlselect,(err, result) => {
if(err) throw err;
if(result.length > 0) {
res.send(result);
}
});
});
//查看用户名
router.get('/seleUname', (req, res) => {
//验证数据是否为空
var obj = req.query;
//console.log('query',obj);
for(var key in obj) {
if(!obj[key]) {
res.send('数据不能为空');
return;
}
}
var sqlselect = 'select uname from xxx where uname = ?';
pool.query(sqlselect,[obj.uname],(err,result) => {
if(err) throw err;
if(result.length > 0) {
console.log(result.tength);
res.send('1');
}else{
res.send('0');
}
});
});
router.post('/reg', (req, res) => {
var obj = req.body;
console.log('body',obj);
for(var key in obj){
if(!obj[key]){
res.send('内容不能为空');
return;
}
}
var selectInsert = 'insert into xxx set ?';
pool.query(selectInsert, [obj], (err, result) => {
if(err) throw err;
if(result.affectedRows > 0) {
console.log(result.affectedRows)
res.send('1');
} else {
res.send('0');
console.log(result.affectedRows)
}
});
});
//导出路由器
module.exports = router;
4.html页面
<!doctype html>
<html> <head>
<meta charset="UTF-8">
<title>Document</title>
<!--<link rel="stylesheet" type="text/css" href="/code.css" />-->
<script src="/reg.js" type="text/javascript" charset="utf-8"></script>
<script src="/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" type="text/css" href="/bootstrap.css" />
<style type="text/css">
*{
margin: 0;
padding: 0;
}
body{
background: url(/true.png) no-repeat;
background-size: cover;
overflow-x: hidden;
overflow-y: hidden;
}
#box{
width: 700px;
height: 500px;
left: 50%;
top: 50%;
margin-left: -350px;
margin-top: -250px;
position: absolute;
}
</style>
</head> <body>
<div id="box">
<div class="container">
<div class="row clearfix">
<div class="col-md-10 column">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">UserName:</label>
<div id="uname_box" class="col-sm-6">
<input id="uname" name="uname" type="text" class="form-control" placeholder="Please enter a user name" />
</div>
<div id="p1"> </div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">UserPassword:</label>
<div class="col-sm-6">
<input id="upwd" name='upwd' type="password" class="form-control" placeholder="Please enter your user password"/>
</div>
<div id="p2"> </div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">ConfirmPassword:</label>
<div class="col-sm-6">
<input id="upwd1" name='upwd' type="password" class="form-control" placeholder="Confirm user password"/>
</div>
<div id="p3"> </div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Email:</label>
<div class="col-sm-6">
<input id="email" name="email" type="text" class="form-control" placeholder="Please enter user email"/>
</div>
<div id="p4"> </div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Tel:</label>
<div class="col-sm-6">
<input id="phone" name="phone" type="text" class="form-control" placeholder="Please enter the user's mobile phone number"/>
</div>
<div id="p5"> </div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<button id="reg" type="submit" class="btn col-lg-9 btn-info">Register</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
5.js前端验证以及Ajax异步交互实现用户注册
window.onload = function() {
uname.onfocus = notNull;
uname.onblur = notNull;
upwd.onfocus = notNull;
upwd.onblur = notNull;
upwd1.onfocus = notNull;
upwd1.onblur = notNull;
email.onfocus = notNull;
email.onblur = notNull;
phone.onfocus = notNull;
phone.onblur = notNull;
upwd.onfocus = passw;
upwd.onblur = passw;
upwd1.onfocus = passw;
upwd1.onblur = passw;
//声明一个全局的xhr
var xhr = new XMLHttpRequest();
var flag = true;
//验证是否为空并且用户名是否已经存在
function notNull() {
if(!uname.value) {
p1.innerHTML = '用户名不能为空';
return;
} else {
p1.innerHTML = '';
getUname();
}
if(!upwd.value) {
p2.innerHTML = '密码不能为空';
return;
} else {
p2.innerHTML = '';
}
if(!upwd1.value) {
p3.innerHTML = '确认密码不能为空';
return;
} else {
p3.innerHTML = '';
}
if(!email.value) {
p4.innerHTML = '邮箱不能为空';
return;
} else {
p4.innerHTML = '';
}
if(!phone.value) {
p5.innerHTML = '手机号不能为空';
return;
} else {
p5.innerHTML = '';
}
}
//验证用户名是否已存在
function getUname() {
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var result = xhr.responseText;
console.log(result);
if(result === '1') {
p1.innerHTML = '用户名已存在';
//如果用户名已存在,该按钮处于禁用状态
reg.setAttribute('disabled','true');
} else {
p1.innerHTML = '';
reg.disabled = false;
}
}
}
var url = "/demo/seleUname?uname=" + uname.value;
xhr.open('get', url, true);
xhr.send(null);
}
//密码验证
function passw() {
if(upwd.value != upwd1.value) {
p3.innerHTML = '两次密码不一致';
}
}
reg.onclick = function() {
//查询所有用户信息
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var result = xhr.responseText;
console.log(JSON.parse(result));
}
}
var url = "/demo/sele";
xhr.open('get', url, true);
xhr.send(null);
//执行注册
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var result = xhr.responseText;
if(flag) {
getUname();
if(result === '1') {
alert('success');
setTimeout(()=>{
location.href = 'http://localhost:8080/login_user.html';
});
} else {
alert('error');
}
}
}
}
var str = "/demo/reg";
xhr.open('post', str, true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var formdata = "uname=" + uname.value + "&upwd=" + upwd.value + "&email=" + email.value + "";
xhr.send(formdata);
}
}
界面展示:

Nodejs实现用户注册的更多相关文章
- Nodejs使用coffeescript编写的用户注册/登陆代码(MySQL)
记录一下,以备后用 Settings = require '../../settings.js' exports.register = (req, res) -> nick_name = req ...
- nodejs学习笔记三(用户注册、登录)
1.定接口 /user 接口 输入 act=reg&user=aaa&pass=123456 输出 {& ...
- 基于NodeJS的秘室聊天室
借着放假期间将NodeJS重新回顾了一下并玩了一下sketch来进行设计界面,很不错.(注:代码整理后会放到github上,请关注.) 本次聊天室我给它定义了一个名称叫“秘密聊天室”. 需求: 技术选 ...
- NodeJS 模块开发及发布详解
NodeJS 是一门年轻的语言,扩展模块并不太全,经常我们想用某个模块但是却找不到合适的.比如前两天我需要使用hmac和sha1来做签名,就没有找到一个比较好用的模块,这时候就需要我们自己来实现相应的 ...
- 大熊君大话NodeJS之------基于Connect中间件的小应用(Bigbear记事本应用之第一篇)
一,开篇分析 大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章, 我也介绍过“Connect”中间件的使用以及“Mongodb”的用 ...
- nodeJS---express4+passport实现用户注册登录验证
网上有很多关于passport模块使用方法的介绍,不过基本上都是基于express3的,本文介绍在express4框架中使用passport模块. 前言 passport是一个功能单一,但非常强大的一 ...
- 基于Cloud Foundry平台部署nodejs项目上线
Cloud Foundry(以下简称CF),CF是Vmware公司的PaaS服务平台,Paas(Platform as a Service,平台即服务), 是为开发者提供一个应用运行的平台,有了这人平 ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- NodeJs开发的CLI——与telnet进行通信的聊天程序
前言: (在NodeJs中,我们想要开启一个tcp协议的做法就是引入net内置对象: const net = require('net'); ——ES6 var net = req ...
随机推荐
- python2.7 的中文编码处理,解决UnicodeEncodeError: 'ascii' codec can't encode character 问题
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- Android Zxing 转换竖屏扫描且提高识别率
最近的一个Android需要用到扫码功能,用的是Zxing开源库.Zxing的集成就不说了,但是Zxing默认的是横屏扫码,在实际生产中并不适用,需要改为竖屏扫描. 转竖屏步骤: 1>. And ...
- Scrapy爬虫框架补充内容三(代理及其基本原理介绍)
前言:(本文参考维基百科及百度百科所写) 当我们使用爬虫抓取数据时,有时会产生错误比如:突然跳出来了403 Forbidden 或者网页上出现以下提示:您的ip访问频率太高 或者时不时跳出一个验证码需 ...
- 浅谈通信网络(三)——TCP/IP协议
简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...
- restrict关键字(暗示编译器,某个指针指向的空间,只能从该指针访问)
我们希望某个对象(内存空间)不被修改的通常做法是什么?声明该空间的const类型,但是这样真的可以吗?是不是的,由于const空间对象的指针是可以付给一个非const值指针的.所以这仍然无法不让该空间 ...
- Centos7搭建hadoop完全分布式
虽然说是完全分布式,但三个节点也都是在一台机器上.拿来练手也只能这样咯,将就下.效果是一样滴.这个我自己都忘了步骤,一起来回顾下吧. 必备知识: Linux基本命令 vim基本命令 准备软件: VMw ...
- 使用Docker部署Spring boot项目
Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...
- CAP原理和BASE思想
分布式领域CAP理论,Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可 ...
- 产品 vs 服务,见识,耐心
站在空无一人略有冷意的街头,突然有种恍如隔世的感觉:这就是传说中橘生淮北则为枳的淮北?咦,我为什么会出现在这里? 于是我陷入了深深的思考. 关于对过去的思考 托尔斯泰说过:幸福的家庭是相似的,不幸的家 ...
- 科学计算工具Numpy
参考学习资料: Python.NumPy和SciPy介绍:http://cs231n.github.io/python-numpy-tutorial NumPy和SciPy快速入门:https://d ...