express实现登录注册(mysql+mongodb),简单添加session(两种)

当我们在浏览器输入一个url提交之后,浏览器会发出一个请求到服务器
其中一个很重要的内容就是资源的路径,服务器收到请求后会根据这个资源路径来匹配对应的模块
完成相应的业务逻辑处理,生成一个响应结果。
寻找匹配处理模块的过程就称为路由。(route)
生成响应结果之后会返回给浏览器,浏览器根据响应的数据完成内容的展示和处理,这就是完整的通信过程。

搭建好nodejs,express,websocket,session,cookie,ejs,mongodb等等环境,百度一下。
如图创建tmall项目在nodejs目录下,node—modules下面都是框架和各类环境的文件。
这里写图片描述
创建model文件装对数据库操作的代码,创建public文件夹装静态文件(图片,网页样式,js等等),
创建views。

首先对代码进行优化,路由数据库操作这些全写在一个文件显然是不合理的,所以分成三个区块(mvc)
登录注册页面放在views中,路由设置在主文件夹下,数据文件存在model中。

1.基于mysql的实现

1.视图文件

在tmall->views下放入用来展示的前端页面,后缀改为ejs
这里写图片描述

2.创建路由主文件

项目目录下创建文件tmall.jss

1.基本代码

//引入express
var express = require('express');
//请求解析中间件
var bodyParser = require('body-parser');
//创建app对象
var app = express();
//指定模板引擎
app.set("view engine", 'ejs');
//指定模板位置
app.set('views', __dirname + '/views');
//设置静态文件
app.use(express.static('public'));
app.use(bodyParser.json());
//创建 application/x-www-form-urlencoded 编码解析
app.use(bodyParser.urlencoded({
    extended:false
}));

2.路由
“/reg”是浏览器地址栏后面加的参数跳注册页面,指向views下的ejs文件

app.get('/reg', function (req, res) {
   

    res.render("register");
})

跳首页和登录同理

app.get('/hom', function (req, res) {
   
        res.render("home");
})
app.get('/log', function (req, res) {
   
 res.render("login");
})

3.路由分发出去
我们把其他的路由全都放在单独的js文件中,单独创建个users.js在tmall.js同目录下
tmall.js添加路由使用路径
如果前端调用到某个方法就是/user/路由url

 app.use('/user',require('./users.js'))

最后添加端口监听

app.listen(8080);
3.路由控制文件

现在在tmall.jss同目录创建users.jss

/**
 * Created by Administrator on 2017/7/16.
 */

//引入express
var express = require('express');
//创建router对象
var router = express.Router();
//引入加密模块
var crypto = require('crypto');
//创建app对象
var app = express();

//这里是注册的控制
router.post('/register',function (req,res) {
   
    console.log(req.body);
    //1,取出数据
    var name = req.body.name;
    var passwd = req.body.password;
    var mobile = req.body.mobile;
    //获得UserModel   (下面是调用封装的数据库方法)在model文件夹下的usermodel文件
    var UserModel = require("./model/UserModel");
    //创建userModel对象
    var userModel = new UserModel();
    //对数据初始化
    userModel.init();
    //进行插入数据
    //生成口令的散列值,crypto 模块功能是加密并生成各种散列
    var md5 = crypto.createHash('md5');
    //3 digest([encoding])方法计算数据的hash摘要值,encoding是可选参数,不传则返回buff
    var en_data = md5.update(passwd).digest('hex');

//调用insert方法,三个参数是个回调函数
    userModel.insert(name,en_data,mobile,function (err, result){
   

        if(err){
            console.log('[INSERT ERROR] - ',err.message);
            res.render("register",{message:"成功失败"});
        }else{
            res.render("login",{message:"成功插入"});
        }

    });



});

//登录路由
router.post('/lo
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值