Cây thư mục:

.
├── app.js
├── bin
│ └── www
├── package.json
├── controllers
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── models
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.pug
├── index.pug
└── layout.pug

Tạo model myModel.js:

var validator = require('validator');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var userSchema = new Schema({
   name : {
        type: String,
        required: true
    },
   email : {
        type: String,
        required: true,
        unique: true,
        lowercase: true,
        validate: value => {
            if(!validator.isEmail(value)){
            throw new Error({error: 'Invalid Email address'})
           }
       }
   },
   password : {
        type: String,
        required: true,
        minlength: 7
   },
   tokens: [{
        token:{
             type: String,
             required: true
        }
   }]
});

//pre thao tác trước khi lưu object
userSchema.pre('save', async function (next){
   var user = this;
   if (user.isModified('password')){
        user.password = await bcrypt.hash(user.password, 8);
   }
   next();
});


var User = mongoose.model('user', userSchema);
module.exports = User;

Tạo controller MyController.js:

var userModel = require('../models/myModel.js');

module.exports = {
    list: function(req, res){
        userModel.find(function(err, users){
            if(err){
                return res.status(500).json({
                    message: 'Error getting user. '
                });
            }
            return res.json(users);
        });
    },

    register: async function(req, res) {
        try{
            var user = new userModel(req.body);
            await user.save();
            var token = await user.generateAuthToken();
            res.status(201).send({user, token});
        }catch(error){
            res.status(400).send(error);
        }
    }
}

Trong file route users:

var express = require('express');
var myController = require('../controllers/MyController.js');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.post('/register', myController.register);
router.get('/list', myController.list);

module.exports = router;

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *