Skip to content

Instantly share code, notes, and snippets.

@matmar10
Last active August 29, 2015 14:13
Show Gist options
  • Save matmar10/a5874aae8ec1a0fe33cd to your computer and use it in GitHub Desktop.
Save matmar10/a5874aae8ec1a0fe33cd to your computer and use it in GitHub Desktop.
Example express middleware flattened chain
var lookupUser, validateBody, mergeUser, saveUser, sendUserUpdatedEmail, returnSuccess;
lookupUser = function (req, res, next) {
User.findOne({
_id: new ObjectId(req.params.id)
}, function (err, user) {
if (err) {
res.status(500).send(err);
return;
}
req.user = user;
next();
});
};
validateBody = function (req, res, next) {
validator.run(rules, req.body, function (errorCount, errors) {
if (errorCount) {
res.status(400).send(errors);
return;
}
next();
});
};
mergeUser = function (req, res, next) {
req.user = merge(req.user, req.body);
next();
};
saveUser = function (req, res, next) {
req.user.save(function (err, savedUser) {
if (err) {
res.status(400).send(errors);
return;
}
req.user = savedUser;
});
};
sendUserUpdatedEmail = function (req, res, next) {
EmailClient.sendEmail(req.user.email, 'Your account was updated', function (err) {
if (err) {
res.status(500).send(err);
return;
}
next();
});
};
returnSuccess = function (req, res) {
res.status(200).send(req.user);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment