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

浙公网安备 33010602011771号