Building a Simple Blog with MongoDB, Express JS, and Node in 5 Easy Steps
Tags: javascript, node, mongodb, codenewbie
Published: 2023-04-16 16:02:23

## Step 1: Setting up the Environment

The first step is to set up the development environment. You will need to install Node.js, MongoDB, and Express.js. You can download Node.js from the [official website](https://nodejs.org) and MongoDB from the MongoDB website. Express.js can be installed using the npm package manager. Once you have installed all the necessary components, you can create a new project folder and start working on your blog.

## Step 2: Creating the Database
The second step is to create the database. You will need to start the MongoDB server and create a new database for your blog. You can do this by opening a new terminal window and typing the following command:
```bash
mongosh
use blog
```
This will create a new database called "blog" and switch to it. You can now create a new collection for your blog posts using the following command:

```javascript
db.createCollection('posts')
```

## Step 3: Setting up the Backend
The third step is to set up the backend of your blog. You can do this by creating a new file called "server.js" in your project folder. In this file, you will need to import the necessary modules and create a new Express.js app. You can use the following code as a starting point:

```javascript
const express = require('express');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;

const app = express();
const port = 3000;

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

MongoClient.connect('mongodb://localhost:27017/blog', (err, client) => {
  if (err) throw err;
  console.log('Connected to MongoDB');
  const db = client.db('blog');

  // Add routes here

  app.listen(port, () => {
    console.log(`Server listening on port ${port}`);
  });
});
```

This code sets up an Express.js app and connects to the MongoDB database. You will need to add routes to the app to handle requests from the frontend.

## Step 4: Adding Routes
The fourth step is to add routes to your app. You can create a new file called "routes.js" in your project folder and add the following code:
```javascript
const express = require('express');
const router = express.Router();
const MongoClient = require('mongodb').MongoClient;

router.get('/posts', (req, res) => {
  const db = req.app.locals.db;
  db.collection('posts').find().toArray((err, result) => {
    if (err) throw err;
    res.send(result);
  });
});

router.post('/posts', (req, res) => {
  const db = req.app.locals.db;
  const post = {
    title: req.body.title,
    content: req.body.content,
  };
  db.collection('posts').insertOne(post, (err, result) => {
    if (err) throw err;
    res.send(result.ops[0]);
  });
});

module.exports = router;
```
This code sets up two routes: one for getting all blog posts and one for creating a new blog post. These routes use the MongoDB driver to interact with the database.

## Step 5: Setting up the Frontend
The final step is to set up the frontend of your blog. You can create a new HTML file called "index.html" in your project folder and add the following code:
```php
<!DOCTYPE html>
<html>
  <head>
    <title>My Blog</title>
  </head>
  <body>
    <h1>My Blog</h1>

    <form id="postForm">
      <label for="title">Title:</label>
      <input type="text" id="title" name="title">

      <label for="content">Content:</label>
      <textarea id="content" name="content"></textarea>

      <button type="submit">Create Post</button>
    </form>

    <ul id="postsList"></ul>

    <script>
      const form = document.getElementById('postForm');
      form.addEventListener('submit', event => {
        event.preventDefault();

        const title = document.getElementById('title').value;
        const content = document.getElementById('content').value;

        fetch('/posts', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({ title, content })
        })
        .then(response => response.json())
        .then(post => {
          const postsList = document.getElementById('postsList');
          const li = document.createElement('li');
          li.textContent = `${post.title}: ${post.content}`;
          postsList.appendChild(li);
        });
      });

      fetch('/posts')
        .then(response => response.json())
        .then(posts => {
          const postsList = document.getElementById('postsList');
          posts.forEach(post => {
            const li = document.createElement('li');
            li.textContent = `${post.title}: ${post.content}`;
            postsList.appendChild(li);
          });
        });
    </script>
  </body>
</html>
```
This code sets up an HTML form to create new blog posts and displays all the posts on the page. The form uses the fetch API to make a POST request to the backend API and the GET request to get all the posts and displays them on the page.

That's it! With these five simple steps, you can create a basic blog using MongoDB, Express.js, and Node.js. Of course, this is just a starting point, and you can customize and extend this blog as per your requirements.