Step-by-Step Guide: Connecting MongoDB with React.js for Seamless Full Stack Development

Rahul Kaklotar
3 min readAug 19, 2023

--

Step-by-Step Guide: Connecting MongoDB with React.js for Seamless Full Stack Development

I’d be happy to walk you through the process of connecting MongoDB with a React.js application step by step. In this example, we’ll assume you have a basic understanding of React.js and MongoDB. If not, you might want to familiarize yourself with those technologies first.

Step 1: Set Up Your MongoDB Database

  1. Install MongoDB: Download and install MongoDB from the official website (https://www.mongodb.com/try/download/community). Follow the installation instructions for your operating system.
  2. Start MongoDB: Start the MongoDB server. This usually involves running a command like mongod in your terminal.
  3. Create a Database: Use a MongoDB management tool like MongoDB Compass or the command line to create a new database. For example, using the command line:
mongo
> use your_database_name

4. Create a Collection: Inside your database, create a collection to store your data. For instance:

> db.createCollection("items")

Step 2: Set Up Your React.js Application

  1. Create a React App: If you haven’t already, create a new React.js application using create-react-app or your preferred method.
  2. Install Dependencies: Inside your React.js project folder, open a terminal and install the necessary packages:
npm install axios mongoose
  • axios is a popular library for making HTTP requests.
  • mongoose is an Object Data Modeling (ODM) library for MongoDB and Node.js.

Step 3: Create a Connection to MongoDB

  1. Create a Server-Side Component: In your React project, set up a server-side component to handle communication with MongoDB. You can create a file named server.js in your project root.
  2. Install Express: Inside server.js, install and set up Express, a Node.js framework for building web applications:
const express = require("express");
const app = express();
const PORT = process.env.PORT || 5000;

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

3. Connect to MongoDB: Add the following code to establish a connection to your MongoDB database using Mongoose. Make sure to replace your_database_name with your actual database name:

const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/your_database_name", {
useNewUrlParser: true,
useUnifiedTopology: true,
});

Step 4: Create API Routes

  1. Create API Routes: In the server.js file, create API routes to interact with MongoDB. For instance, you can create a route to get all items from the collection:
const Item = require("./models/Item"); // Create the Item model

app.get("/api/items", async (req, res) => {
try {
const items = await Item.find();
res.json(items);
} catch (error) {
console.error(error);
res.status(500).send("Server Error");
}
});

2. Create the Item Model: Create a new folder called models in your project and inside it, create a file named Item.js to define the schema for your MongoDB collection:

const mongoose = require("mongoose");

const itemSchema = new mongoose.Schema({
name: String,
description: String,
});

module.exports = mongoose.model("Item", itemSchema);

Step 5: Fetch Data in React

  1. Fetch Data in React Component: In your React component, use Axios to fetch data from the API you set up in the previous step. You can fetch data in a useEffect hook:
import React, { useState, useEffect } from "react";
import axios from "axios";

function App() {
const [items, setItems] = useState([]);

useEffect(() => {
axios.get("/api/items")
.then(response => setItems(response.data))
.catch(error => console.error(error));
}, []);

return (
<div>
<h1>Items</h1>
<ul>
{items.map(item => (
<li key={item._id}>
<h3>{item.name}</h3>
<p>{item.description}</p>
</li>
))}
</ul>
</div>
);
}

export default App;

And that’s it! You’ve successfully connected a MongoDB database to a React.js application. This example covers the basics of setting up the connection, creating API routes, and fetching data. Remember that in a real-world application, you’d likely want to implement additional error handling, authentication, and more advanced features.

--

--

Rahul Kaklotar

I'm front-end developer with 4 years of expertise in HTML, CSS, JavaScript, React. Passionate about creating user-friendly websites with a sharp eye for detail.