前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端

需求:实现注册功能

为了区分登录和注册是两个不同的请求,在端口后面加上/login表示登录,/register表示注册,交给后台处理

前端代码还是和之前的一样,控制好请求的URL即可

Node.js 服务端代码如下:

1、监听端口的node-post.js(Controller层)

/**
* Created by LB on 2017/10/27.
*/
var http = require('http');
var url = require('url');
// 路由
var Router = require('./node-router'); http.createServer(function (req, res) {
var parms = url.parse(req.url,true);
console.log(parms); var router = new Router(parms);
router.loginOrRegister(function (result) {
console.log("最终回调:" + result.msg);
res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
res.end('callback('+JSON.stringify(result)+')');
}); }).listen(8082);

这里多了一个路由的概念,目前我的项目中并没有很好的运用它,请不要在意,这个js代码有点像Java服务端开发中的Control层,接收客户端请求并获取参数交给服务层处理,将服务层回调的数据传递给客户端

2、逻辑处理层 node-router.js(Server层)

// 获取user模块
var User = require('./model-user');
// 获取CURD模块
var CURD = require('./node-sql');
// 构造
var curd = new CURD(); var Router = function (parms) {
this.pathname = parms.pathname;
this.user = new User(null,parms.query.userName,parms.query.userPsw);
}; Router.prototype.loginOrRegister = function (callback) {
var user = this.user;
if(this.pathname == "/login"){
console.log("登录验证请求");
curd.check(user, function (result) {
callback(result);
});
}else if (this.pathname == "/register"){
console.log("注册请求");
curd.check(user, function (res1) {
if (res1.status != 200) {
curd.add(user,function (res2) { // 这里不能用 this.user,此时this并不指向 Router
callback(res2);
})
}else {
res1.msg = "该用户名已存在,请重新输入";
callback(res1);
}
});
}
}; module.exports = Router;

主要做的事有,构造User实例,判断URL如果是登录则调用check() ,如果是注册则先调用check() 判断能否注册,能注册在调用add()新增

3、数据node-sql.js(Dao层)

//增
CURD.prototype.add = function(obj,callback){
sql = " INSERT INTO user VALUES(?,?,?)";
console.log("---" +obj.getUserName()+ "---" +obj.getUserPsw());
var addParams = [obj.getId(),obj.getUserName(),obj.getUserPsw()];
connection.query(sql,addParams, function (error,result) {
if (error){
console.log("[INSERT ERROR] - ",error.message);
return;
}
console.log("----------------------------INSERT----------------------------");
console.log("INSERT ID:" + result.insertId);
console.log(JSON.stringify(result));
console.log("--------------------------------------------------------------\n\n"); if(result.insertId) {
resData.status = 200;
resData.msg = "注册成功!";
}else {
resData.status = 203;
resData.msg = "注册失败!"
}
callback(resData);
})
};
// 查
CURD.prototype.check = function(obj,callback){
sql = "SELECT COUNT(*) FROM `user` AS u where u.userName = ? AND u.userPsw = ?";
console.log(obj.getUserName() + "====" + obj.getUserPsw());
var addParams = [obj.getUserName(),obj.getUserPsw()];
if(obj){
connection.query(sql,addParams, function (error, result) {
if(error){
console.log("[SELECT ERROR] - ",error.message);
return;
}
console.log("----------------------------SELECT----------------------------");
console.log(result);
console.log(result[0]);
console.log(result[0]["COUNT(*)"]);
console.log("--------------------------------------------------------------\n\n");
if (result[0]["COUNT(*)"] == 0){
resData.status = 203;
resData.msg = "用户名或密码有误";
}else{
resData.status = 200;
resData.msg = "验证成功";
}
resData.data = {
count:result[0]["COUNT(*)"]
};
callback(resData);
}); }else{
// 返回所有对象
}
};

这里需要主要就给出新增和查询两个,以及回调的数据格式,我是按照我们公司的文档规定来写的.

目前为止基础篇就这么多了,→点击源码下载

所以从下一篇开始,我会按照以下路线来学习探索

1、Express 框架重写登录注册,(这里并不介绍Express框架,请参考其他文献)

2、表格数据、分页、带条件搜索

3、表格数据的导入导出

4、上传大头贴

5、webSocket推送

目前能想到的就这么多,其实我现在都不知道服务端这些东西该怎么写,毕竟我只是个前端小菜鸟而已

如有不足之处,请指教,谢谢!

Node.js基础学习四之注册功能的更多相关文章

  1. Node.js基础学习三之登录功能

    本篇介绍Node.js访问数据库并返回数据给客户端 需求基于Node.js学习(二) 数据库请下载:user.sql 1.创建user 实体类(model-user.js) function User ...

  2. node.js 基础学习笔记2

    Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...

  3. node.js 基础学习笔记1

    1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...

  4. Node.js基础学习二之POST请求

    本篇介绍下 Node.js post 请求 需求: 用户登录,前端界面输入用户名和密码,点击登录请求后台验证,根据后台反馈的信息做出响应 前端: (1)使用form表单 (2)使用ajax异步请求 服 ...

  5. Node.js基础学习一之Get请求

    本人从事的是前端开发,这段时间公司开发项目比较少所以就想着学点东西,然后就想到了Node.js ,跟着菜鸟教程学了点,不过我觉得最好的学习方法是带着需求来学习. 其实和服务端打交道无非就是能有一个可以 ...

  6. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  7. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  8. node.js 基础学习

    node.js 是一个 javaScript 运行环境,可以让 js 运行在服务端. 在 nodejs 环境下,可以运行 javascript 基本语法,可以在nodejs 中执行一些无法在浏览器端执 ...

  9. node.js 基础学习笔记3 -express

    1.工作原理 当通过app.js建立的服务器时,会看到一个简单的页面.返回页面时,浏览器会向服务器发送请求.app会解析请求的路径,调用相应的逻辑,调用对应的视图模板,传递对象数值,最终生成HTML页 ...

随机推荐

  1. 太原面经分享:如何在vue面试环节,展示你晋级阿里P6+的技术功底?

    前言 一年一度紧张刺激的高考开始了,与此同时,我也没闲着,奔走在各大公司的前端面试环节,不断积累着经验,一路升级打怪. 最近两年,太原作为一个准二线城市,各大互联网公司的技术栈也在升级换代,假如你在太 ...

  2. .node 文件require时候显示Error: The specified module could not be found

    参考文章:https://stackoverflow.com/questions/41253450/error-the-specified-module-could-not-be-found 第一:你 ...

  3. HDU 6321 Dynamic Graph Matching

    HDU 6321 Dynamic Graph Matching (状压DP) Problem C. Dynamic Graph Matching Time Limit: 8000/4000 MS (J ...

  4. Docker 试用

    Docker还是从.net core 了解的 百度百科 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可 ...

  5. TNS-12560: TNS: 协议适配器错误同时伴有TNS-00584: 有效节点检查配置错误的解决方法

    :修改/home/oracle/app/product/11.2.0/db_1/network/admin/sqlnet.ora(与listener.ora同一目录) 增加白名单: tcp.valid ...

  6. Python 中文分词(结巴分词)

    特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词 ...

  7. 共享文件 Ubuntu下安装Samba与Windows

    Author:Xianghai Ding.Date:2019/01/08**************************************************************安装 ...

  8. awk命令使用经验

    1.为什么要使用awk 举一个简单的例子,作为一个java开发人员,在查看日志服务器(即时保存所有线上环境的日志)上的日志的时候,由于部署了服务的服务器不止一台,当想要查找某一个特定信息的时候,由于不 ...

  9. Virtual Memory is deprecated in Redis 2.4

    在读一个源码的讲解的文章时或者读一本关于某个技术的数据集时,可能书籍的讲解是滞后的,就是没有更上最新的代码,那么就要注意了WARNING! Virtual Memory is deprecated i ...

  10. python的高级数组之稀疏矩阵

    稀疏矩阵的定义: 具有少量非零项的矩阵(在矩阵中,若数值0的元素数目远多于非0元素的数目,并且非0元素分布没有规律时,)则称该矩阵为稀疏矩阵:相反,为稠密矩阵.非零元素的总数比上矩阵所有元素的总数为矩 ...