1, first introduced /models/User.js model defined in the database router / api.js in
var User = require ( '../ models / User') // User returns a constructor, static constructor method, dynamic method. By these methods to operate the database
2, after the introduction to the operation of the database through the User model classes
3, see momgoose related documents https://mongoosejs.com/docs/api.html
Specific code file (red font change section):
A, /router/api.js .
var express = require('express')
var router = express.Router()
the require the User = var ( '../ Models / the User')
// returns the User is a constructor, static constructor method, dynamic method. By these methods to operate the database
/**
* Unified interface format returns
*/
was the response data;
router.use((req,res,next)=>{
// Initialize the return data
responseData = {
code: 0, // error code is returned, the default is 0, 0 means no error
message: '', // error message. By default, no error is empty
}
/**
* [Not executed next, the program will be stuck here]
*/
next()
})
/**
* User Registration
* Registered Logic
*
* 1, user names, passwords can not be empty
* 2, are the same password twice
*
* 1, whether the user has been registered
* Database Query
*/
router.post('/user/register',(req,res,next)=>{
console.log(req.body)
// pass over the saved data into a variable
var username = req.body.username
var password = req.body.password
var repassword = req.body.repassword
// determine whether the user is empty
if(username == ''){
responseData.code = 1
responseData.message = 'user name can not be empty'
/**
* The data returned distal
* To json form
*/
res.json(responseData)
return
}
// determine whether the password is blank
if(password == ''){
responseData.code = 2
responseData.message = 'password is not blank'
res.json(responseData)
return
}
// determine whether the same password twice
if(password != repassword){
responseData.code = 3
responseData.message = 'Enter the password twice inconsistent'
res.json(responseData)
return
}
/**
* Username exists in the database
* 1, first go to the introduction of a defined database model /models/User.js
*/
User.findOne({
username: username // Query username and the username equal in the database, the return of the object is a mongoose
}).then((userInfo)=>{
console.log(userInfo)
if(userInfo){
responseData.code = 4
responseData.message = 'user name already exists'
res.json(responseData)
return
}
/**
* Registered user to submit information to the database
* User class can be directly manipulated
*/
var user = new User({
username:username,
password:password
})
return user.save()
}).then((newUserInfo)=>{
console.log(newUserInfo)
//registration success
responseData.message = 'registration success'
res.json(responseData)
})
})
module.exports = router
Two, /public/js/index.js
$(function(){
var $register = $('#register');
was $ login = $ ( '# login');
$register.find('a.change').on('click',()=>{
$login.show();
$register.hide();
})
$login.find('a.change').on('click',()=>{
$login.hide();
$register.show();
})
/**
* Click on the Register button = "= by ajax" submit data
*/
$register.find('button').on('click',()=>{
$.ajax({
type:'post',
url:'/api/user/register',
data:{
username: $register.find('[name="username"]').val(),
password: $register.find('[name="password"]').val(),
repassword: $register.find('[name="repassword"]').val(),
},
dataType: 'json',
success:function(data){
console.log(data)
$register.find('.info').html(data.message)
if(!data.code){
// registration is successful, jump to the login panel
setTimeout(()=>{
$login.show();
$register.hide();
},1000)
}
}
});
})
})