美文网首页
注册逻辑

注册逻辑

作者: 游荡的猫咪 | 来源:发表于2018-06-07 10:12 被阅读0次

    用mongoose数据库进行操作,首先要定义schema,如下:db.js

    const mongoose = require('mongoose')
    mongoose.connect('mongodb://localhost/test')
    const db = mongoose.connection
    db.once('error',() => {
        console.log('mongo connection error')
    })
    db.once('open', () => {
        console.log('mongo connection successed')   
    })
    const LoginShema = mongoose.Schema({
        account: String,
        password: String
    })
    const Models = {
        Login : mongoose.model('Login', LoginShema)
    }
    
    module.exports = Models
    

    其次写入口文件index.js

    // 引入编写好的api
    const api = require('./api'); 
    // 引入文件模块
    const fs = require('fs');
    // 引入处理路径的模块
    const path = require('path');
    // 引入处理post数据的模块
    const bodyParser = require('body-parser')
    // 引入Express
    const express = require('express');
    const app = express();
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(api);
    // 访问静态资源文件 这里是访问所有dist目录下的静态资源文件
    app.use(express.static(path.resolve(__dirname, '../dist')))
    // 因为是单页应用 所有请求都走/dist/index.html
    app.get('*', function(req, res) {
        const html = fs.readFileSync(path.resolve(__dirname, '../dist/index.html'), 'utf-8')
        res.send(html)
    })
    // 监听8088端口
    app.listen(8088);
    console.log('success listen…………');
    

    最重要的是api里的逻辑,注册部分首先要查询所给account是否存在于数据库中,存在则不能注册,不存在则可以注册,注册时,将密码md5方式加密,分别用find和save方法,如下:

    "use strict";
    const models = require('./db');
    const express = require('express');
    const router = express.Router();
    const crypto = require('crypto')
    /************** 创建(create) 读取(get) 更新(update) 删除(delete) **************/
    
    // 创建账号接口
    router.post('/api/login/createAccount',(req,res) => {
        
        // 检查是否存在该用户
        let testAccount = {account:req.body.account};
        let errorInfo = {}
        models.Login.find(testAccount, function (err, detail) {
            console.log(detail)
            // 若存在用户则不能注册,返回403
            if (detail.length) {
                errorInfo = JSON.stringify({code:0, msg:"用户名重复\n"})
                res.writeHead(403, {'Content-Type': 'text/plain;charset=utf-8'})
                res.end(errorInfo)
                console.log(errorInfo)
            }else{
            // 否则保存数据newAccount数据进mongoDB
                let newAccount = new models.Login({
                    account : req.body.account,
                    password : getMD5Password(req.body.password)//密码进行md5加密
                });
                newAccount.save((err,data) => {
                    if (err) {
                        res.send(err);
                        console.log(err)
                    } else {                    
                        res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'})
                        res.end(JSON.stringify({code:1,msg:'createAccount successed'}));
                        console.log('createAccount successed')
                    }
                });
                
            }
        })
        
    });
    
    /***************************utils***********************************/
    
    function getMD5Password(content) {
        var md5 = crypto.createHash('md5');//定义加密方式:md5不可逆,此处的md5可以换成任意hash加密的方法名称;
        md5.update(content);
        var d = md5.digest('hex');  //加密后的值d
        return d;
    }
    module.exports = router;
    

    相关文章

      网友评论

          本文标题:注册逻辑

          本文链接:https://www.haomeiwen.com/subject/lgbwsftx.html