## Shorthand Property Definition Notation
As I mentioned [in an answer](https://codereview.stackexchange.com/a/232969/120114) to one of your previous posts, [The shorthand property definition notation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Property_definitions) can be used to simplify the lines like these where the key is the same as the name of the variable being referenced:

>      categories: categories,
>      posts: posts

To simply:

     categories,
     posts

## Waiting with `await`
With async / await the code that is typically in the promise callback can be moved out- so take this section for example:

>      const posts = await Post.find({}, (err, posts) => {
>          if (err) {
>                  console.log('Error: ', err);
>              } else {
>                  res.render('admin/index', {
>                      layout: 'admin/layout',
>                      website_name: 'MEAN Blog',
>                      page_heading: 'Dashboard',
>                      posts: posts
>                  });
>              }
>          }).populate('category');

I haven’t tested this code but my guess is that the call to `.populate('category')` comes *after* the callback where `res.render()` is called - so that **may be a bug**.


It can be like simplified to something like this:

    const posts = await Post.find({}).populate('category').catch(err => {
            console.log('Error: ', err);
        });
    res.render('admin/index', {
        layout: 'admin/layout',
        website_name: 'MEAN Blog',
        page_heading: 'Dashboard',
        posts
    });

Though maybe the call to populate the category needs to come after the value from `Post.find({})` Is assigned to `posts`.

And similarly for the other functions called with `await`. This way the value assigned to `posts` from can be used properly. 

## Useless `else` keyword after `return`

In the callback to `post.save()`:

>       if (err) {
>           console.log(err);
>           return;
>       } else {
>           req.flash('success', "The post was successfully added");
>           req.session.save(() => res.redirect('/dashboard'));
>       }

The code in the `else` block can be moved out because in the first case there is a `return` statement. This can reduce the indentation level. 

## variable declared with `var`

The [answer by CertainPerformance](https://codereview.stackexchange.com/a/250919/120114) to your previous post recommends avoiding the `var` keyword. Yet this code uses it:


>     exports.addCategory = (req, res, next) => {
>
>          var form = {
>              categoryholder: req.body.cat_name
>          };

That variable is never reassigned so it can be declared with `const`.
And similarly for `updateCategory()` - it has a variable declared with  `var` named `form` that never gets re-assigned.