NodeJS博客实战08_用户注册和数据库验证
程序员文章站
2023-12-22 16:24:22
...
1.注册写入数据库
在上一篇文章中在后端验证了用户注册输入信息不合法的情况,本篇主要讲解当用户输入合法后数据库写入的内容
写入数据则需要对数据库进行操作,前面介绍了使用mongoose模块的Schema对象方法定义user的表结构,使用moogoose的model方法定义了模型类,通过对模型类的操作来操作数据库
在api.js引入之前定义的数据库模型类命名为User,
moogoose模型类提供了findOne()方法用于查找数据中对应字段,可以利用此方法查找该用户名是否被注册;
若没有注册则将用户信息存入数据库,但是需要使用模型类的对象方法,即需要new出一个User对象执行该对象的save()方法
api.js:
var express = require('express');
var router = express.Router();
var User = require('../models/User');//引入模型类
//定义返回变量格式
var resData;
router.use(function(req,res,next){
resData = {
code:0,
message:''
};
next();
})
//注册逻辑
router.post('/user/register',function(req,res,next){
var username = req.body.username;
var password = req.body.password;
var repassword = req.body.repassword;
//用户名不能空
if(username == ''){
resData.code = 1;
resData.message = '用户名不能为空';
res.json(resData); //使用res.json的方法返回前端数据
return;
}
//密码不能为空
if(password == ''){
resData.code = 2;
resData.message = '密码不能为空';
res.json(resData);
return;
}
//两次密码不能不一样
if(password != repassword){
resData.code = 3;
resData.message = '两次输入的密码不一致';
res.json(resData);
return;
}
//验证用户名是否已经注册,需要通过模型类查询数据库
User.findOne({
username:username
}).then(function(userInfo ){
// console.log(userInfo); //若控制台返回空表示没有查到数据
if(userInfo){
//若数据库有该记录
resData.code = 4;
resData.message = '用户名已被注册';
res.json(resData);
return;
}
//用户名没有被注册则将用户保存在数据库中
var user = new User({
username:username,
password:password
});//通过操作对象操作数据库
return user.save();
}).then(function(newUserInfo){
resData.message = '注册成功';
res.json(resData);
});
})
module.exports = router;
注册成功后,查看数据库可以查到该用户的信息
在mongo数据库下的blog库中的users表中查到了两个注册信息,其中一个便是上面点击注册的信息。
2.注册前端提示
用户填写不合法的注册信息需要在页面给出对应的提示
在views/main/index.html的注册form表单添加子div用于显示提示信息
<div class="registerRemind"></div>
并在public/css/main.css为其设置样式:
.registerRemind {
color: #f70000;
text-align: center;
font-size: 13px;
margin-top: 10px;
}
进入public/js/index.js文件中设置返回信息处理
$(function(){
var toLogin = $('a.toLogin'),
toRegister = $('a.toRegister'),
loginInfo = $('div.loginInfo'),
registerInfo = $('div.registerInfo'),
loginBtn = $('input.loginBtn'),
registerBtn = $('input.registerBtn'),
registerRemind = $('.registerRemind');
toLogin.on('click',function(){
registerInfo.hide();
loginInfo.show();
})
toRegister.on('click',function(){
loginInfo.hide();
registerInfo.show();
})
loginBtn.on('click',function(){
$.ajax({
type:'post',
url: '/api/user/register',
data: {
username:registerInfo.find('[name="username"]').val(),
password:registerInfo.find('[name="pwd"]').val(),
repassword:registerInfo.find('[name="rpwd"]').val()
},
dataType: 'json',
success: function(res){
registerRemind.html(res.message);//返回提示信息
if(!res.code){
console.log(res.code);
//注册成功,1s后跳转到登录
setTimeout(function(){
registerInfo.hide();
loginInfo.show();
},1000);//这是1秒延迟跳转
}
}
})
})
})
将用户输入信息不合法将显示对应提示: