express+mongoose实现登录注册

app.js

...
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myDB',{ useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true }) //连接本地数据库
var db = mongoose.connection;
// 连接成功
db.on('open', function(){
  console.log('MongoDB Connection Successed');
});
// 连接失败
db.on('error', function(){
  console.log('MongoDB Connection Error');
});

var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
...

users.js(此处直接使用routes的)

...
router.post('/login', function(req,res,next) {
  let data = {
    loginName: req.body.loginName,
    password: req.body.password,
  };
  UserModel.findOne({
    loginName: data.loginName,
    password: data.password,
  },function(err,data) {
    if(err) throw err;
    if(data) {
      res.send('登录成功');
    } else {
      res.send('账号密码错误');
    }
  })
})

router.post('/register', function(req,res,next) {
  let data = {
    loginName: req.body.loginName,
    password: req.body.password
  }
  UserModel.findOne({loginName: data.loginName}, function(err, resData) {
    if(resData){
      res.send('用户已被注册')
    } else {
      UserModel.create(data, function(err, data) {
        if(err) {
          const error = err.errors;
          for(var attr in error) {
            res.send(error[attr]['message']);
          }
        }
        else {
          res.send('注册成功')
        }
      })
    }
  })
})
...

userModel.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const userSchema = new Schema({
  loginName: { 
    type: String, 
    require: true,
  },
  password: { 
    type: String,
    require: true,
    minLength: 6,
    maxLength: 20,
    validate: {
      validator: (value) => {
        return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/.test(value)
      },
      message: "请输入6-20位数字与字母组合"
    }
  },
  createAt: {
    type: Date,
    default: Date.now()
  }
})
const UserModel = mongoose.model('user', userSchema)
module.exports = UserModel
posted @ 2021-04-07 16:15  AdolphWilliam  阅读(184)  评论(0)    收藏  举报