1.2.0 • Published 8 years ago

express-api-controller v1.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

express-api-controller

'use strict'

var path = require('path')
var app = require('express')()
var bodyParser = require('body-parser')
var expressValidator = require('express-validator')
var controller = require('express-api-controller')
var controllers = controller(path.resolve(__dirname, '../controllers'))

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(expressValidator())

app
  .route('/api/v1/accounts')
    .get(controllers.api.v1.accounts.index)
    .post(controllers.api.v1.accounts.create)

app.listen(3000)
/**
 * Controller: accounts
 * Action:     create
 * Method:     POST
 * Path:       api/v1/accounts
 */

var Account = require('../models/account')

module.exports = {

  // Validattion middleware
  validations: function * (req, res, next) {
    req.checkBody('email', 'Invalid postparam').notEmpty().isEmail()
    req.checkBody('password', 'Invalid postparam').notEmpty()

    next()
  },

  // Sanitization middleware
  sanitize: function * (req, res, next) {
    req.sanitizeBody('email').normalizeEmail()

    next()
  },

  // Action logic middleware
  action: function * (req, res, next) {

    // Getting request data
    var { email, password } = req.body

    // Create new account
    var account = new Account({
      email,
      password
    })

    // Save account to database
    const data = yield account.save()

    // Response data with json
    res.json(data)
  }

}