From 18320dea9e2a57468dedb669f49eea8ea06909d1 Mon Sep 17 00:00:00 2001 From: Madhusudhan Srinivasa Date: Fri, 27 Nov 2015 17:34:23 +0100 Subject: [PATCH] use generators for users --- app/controllers/users.js | 41 +++++++++++++--------------------------- app/models/user.js | 2 +- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/app/controllers/users.js b/app/controllers/users.js index 159a4b190..db6e969d7 100644 --- a/app/controllers/users.js +++ b/app/controllers/users.js @@ -5,48 +5,33 @@ */ const mongoose = require('mongoose'); +const wrap = require('co-express'); const User = mongoose.model('User'); -const utils = require('../../lib/utils'); /** * Load */ -exports.load = function (req, res, next, id) { - const options = { - criteria: { _id : id } - }; - User.load(options, function (err, user) { - if (err) return next(err); - if (!user) return next(new Error('Failed to load User ' + id)); - req.profile = user; - next(); - }); -}; +exports.load = wrap(function* (req, res, next, _id) { + const criteria = { _id }; + req.profile = yield User.load({ criteria }); + if (!req.profile) return next(new Error('User not found')); + next(); +}); /** * Create user */ -exports.create = function (req, res) { +exports.create = wrap(function* (req, res) { const user = new User(req.body); user.provider = 'local'; - user.save(function (err) { - if (err) { - return res.render('users/signup', { - errors: utils.errors(err.errors || err.message), - user: user, - title: 'Sign up' - }); - } - - // manually login the user once successfully signed up - req.logIn(user, function (err) { - if (err) req.flash('info', 'Sorry! We are not able to log you in!'); - return res.redirect('/'); - }); + yield user.save(); + req.logIn(user, err => { + if (err) req.flash('info', 'Sorry! We are not able to log you in!'); + return res.redirect('/'); }); -}; +}); /** * Show profile diff --git a/app/models/user.js b/app/models/user.js index a03e98eb8..4048eead7 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -179,7 +179,7 @@ UserSchema.statics = { load: function (options, cb) { options.select = options.select || 'name username'; - this.findOne(options.criteria) + return this.findOne(options.criteria) .select(options.select) .exec(cb); }