• 简版的电商项目学习——第三步:数据库创建,注册功能实现以及用户密码加密


    一、简介

      拿到数据之后,在主目录创建 db 目录存放数据,在数据库里建一个存放数据的表,然后再将在页面拿到数据去数据库里进行查询,就需要连接数据库中的表,并且将在页面获取到的数据作为查询条件去表里查询数据,这就涉及到 MVC 的架构,现在已经有了 view —— V, controller —— C,再创建 modal —— M 目录存放对数据库的操作

     1、让 mongo 在项目里运行:

    mongod --dbpath ./db     //如果是当前目录就是 ./ 

     2、在 modal 文件里操作数据:

      安装:mongoose

    cnpm install mongoose --save

      创建数据库:

    var mongoose = require('mongoose');
    
    //创建连接数据库
    mongoose.connect('mongodb://localhost:27017/shopping');
    //得到链接
    var connection = mongoose.connection;
    
    //连接数据库失败
    connection.on('error',function (err) {
       if(err){
          console.log('连接失败',err)
       }
    })
    
    //连接成功
    connection.on('open',function (err,data) {
       if(err){
          console.log('mongodb connection error' , err);
       }else{
          console.log('mongodb connection success');//连接成功输出
       }
    })
    
    //导出数据库
    module.exports = mongoose;

      3、有了数据库之后,就要创建一个用于存放管理员的表 admin

      创建表

    var mongoose = require('mongoose');
    
    //创建数据骨架
    var adminSchema = new mongoose.Schema({
       username:String,
       password:String,
       type:Number
    })
    
    //创建模型 userModel ==》 user表
    var adminModel = mongoose.model('admin',adminSchema);
    
    /**
     * 执行注册用户数据写入
     * @type {{login}}
     * @params object 用户名 密码
     */
    function reg(params) {
       adminModel.create(params,(err,data)=>{
          if(err){
    
          }else{
             console.log(data);
          }
       })
    }
    
    module.exports = {
       reg
    };

      创建好之后,因为是要存储管理员的数据,所以要在注册操作中调用,从而把用户的数据存到数据表中。

    var mongoose = require('./connect.js');
    
    //创建数据骨架
    var adminSchema = new mongoose.Schema({
       username:String,
       password:String,
       type:Number
    })
    
    //创建模型 adminModel ==》 admin表
    var adminModel = mongoose.model('admin',adminSchema);
    
    /**
     * 执行注册用户数据写入
     * @type {{login}}
     * @params object 用户名 密码
     */
    function reg(params) {
       adminModel.create(params,(err,data)=>{ //有了要提交的数据之后就要调用,添加注册用户信息的 reg 方法。
          if(err){
             console.log('err');
          }else{
             console.log(data);
          }
       })
    };
    
    module.exports = {
       reg
    };

    然后重启控制台,注册功能运行就 OK 了!!!

      现在注册功能已经实现,但是密码确是明文状态,所以加密必不可少!

     4、密码加密 —— crypto

       下载依赖模块:

    cnpm install crypto

      因为加密不只是在注册处会用,所以把他封装成一个小方法,然后在使用的时候调用就好了。首先秉着整齐,功能操作分开的理念,创建一个 utils 文件存放一些封装的方法。

      密码加密方法:

    var crypto = require('crypto');
    
    function md5(password) {
       var md5 = crypto.createHash('md5');//crypto模块功能是加密并生成各种散列,此处所示为MD5方式加密
       var end_paw = md5.update(password).digest('hex');
       return end_paw
    }
    module.exports = {
       md5
    }

      现在要对用户密码进行加密,所以现在在数据加入数据库之前实行加密操作:

    //先引入加密方法模块
    var utils = require('../utils/utils.js');
    
    //在regPost提交数据前引入
    function regPost(req,res,next) {
       var postData = {
          username:req.body.username,
          password:utils.md5(req.body.password)//调用加密方法
       }
       adminModel.reg(postData)
    }

      然后再次重启控制台,就好啦!!!

  • 相关阅读:
    汇编--基础分析:数据段在内存中的存放及空间
    汇编语言(王爽)第六章检测点与实验5
    C语言经典例题100(22~40)
    C:数组小结(3)
    随机不重复的取数组元素,并赋值给div使用
    关于Apple设备私有的apple-touch-icon属性详解
    测试你女友是否跟你结婚插件的源码
    CSS子元素设置margin-top作用于父容器?
    hybrid app开发中:苹果移动设备实用Meta标签
    chromium 修改chromium的设置选项
  • 原文地址:https://www.cnblogs.com/cmy485562216/p/8341417.html
Copyright © 2020-2023  润新知