Saving and listing Category model
I assume you have a typo there, error is nowhere defined but you do have err.

To jackdbernier's point, you should read the docs:
http://expressjs.com/guide.html#users-online

In there it is clear that you should call next regardless whether you have an error or not, otherwise not all middlewares will be processed.

If you insist on logging before call next, you could.

function handleError( message , err , next )
{
  console.error( message );
  return next( err );
}

new Category({
  name: name,
  description: description,
}).save(function(err, docs){
  if ( err ){
    return handleError( 'error: saving category' , err, next );
  } 
  console.log('category saved.');
  res.redirect('categories');
  next(); // &lt;- this!
});
}


Though I would personally drop the curly braces from that if( err ).