8 ~ ~ Express-based authentication database

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)
        }
      }
    });
  })
})

Guess you like

Origin www.cnblogs.com/500m/p/10992789.html