注册逻辑

用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;

你可能感兴趣的:(注册逻辑)