How to create a CRUD application with Node.js and Express

How to Create a CRUD Application with Node.js and Express

Creating a CRUD (Create, Read, Update, Delete) application is one of the most fundamental tasks in web development. Whether you’re building a simple contact manager or a complex inventory system, mastering CRUD operations is essential. In this article, we'll guide you through the process of creating a CRUD application using Node.js and Express, two of the most popular tools in the JavaScript ecosystem.

What is Node.js and Express?

Node.js is a runtime environment that allows you to run JavaScript on the server side. It’s built on Chrome's V8 JavaScript engine and is known for its fast performance and scalability.

Express is a web application framework for Node.js that simplifies the process of building web applications. It provides a robust set of features to develop web and mobile applications.

Use Cases for CRUD Applications

CRUD applications can be utilized in various domains, including:

  • Content Management Systems (CMS): Manage articles, blog posts, and media.
  • E-commerce Platforms: Handle products, orders, and customer data.
  • Social Media Applications: Manage user profiles, posts, and interactions.
  • Inventory Systems: Track items, suppliers, and stock levels.

Setting Up Your Development Environment

Before we dive into coding, let’s set up our development environment.

Prerequisites

  • Node.js: Ensure you have Node.js installed on your machine. You can download it from the official website.
  • npm (Node Package Manager): This comes bundled with Node.js.

Step 1: Initialize Your Project

  1. Open your terminal and create a new directory for your project: bash mkdir my-crud-app cd my-crud-app

  2. Initialize a new Node.js project: bash npm init -y

This command creates a package.json file that contains your project’s metadata.

Step 2: Install Dependencies

For our CRUD application, we'll need Express and a few other packages. Install them by running:

npm install express body-parser mongoose
  • express: Web framework for Node.js.
  • body-parser: Middleware to parse incoming request bodies.
  • mongoose: ODM (Object Data Modeling) library for MongoDB.

Step 3: Create Your Application Structure

Create the following file structure for your application:

my-crud-app/
│
├── server.js
└── models/
    └── item.js

Step 4: Set Up the Server

Open the server.js file and add the following code:

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();
const PORT = process.env.PORT || 3000;

// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/mycrudapp', { useNewUrlParser: true, useUnifiedTopology: true });

// Middleware
app.use(bodyParser.json());

// Item model
const Item = mongoose.model('Item', new mongoose.Schema({
    name: String,
    quantity: Number
}));

// Create
app.post('/items', async (req, res) => {
    const item = new Item(req.body);
    await item.save();
    res.status(201).send(item);
});

// Read
app.get('/items', async (req, res) => {
    const items = await Item.find();
    res.send(items);
});

// Update
app.put('/items/:id', async (req, res) => {
    const item = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
    res.send(item);
});

// Delete
app.delete('/items/:id', async (req, res) => {
    await Item.findByIdAndDelete(req.params.id);
    res.status(204).send();
});

// Start server
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

Step 5: Create the Item Model

In the models/item.js file, we already defined the model in server.js, but if you want to separate it, you can do:

const mongoose = require('mongoose');

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

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

Step 6: Testing Your CRUD Application

To test your application, you can use tools like Postman or cURL.

  1. Create an Item:
  2. Method: POST
  3. URL: http://localhost:3000/items
  4. Body (JSON): json { "name": "Apple", "quantity": 10 }

  5. Read Items:

  6. Method: GET
  7. URL: http://localhost:3000/items

  8. Update an Item:

  9. Method: PUT
  10. URL: http://localhost:3000/items/:id
  11. Body (JSON): json { "name": "Banana", "quantity": 15 }

  12. Delete an Item:

  13. Method: DELETE
  14. URL: http://localhost:3000/items/:id

Troubleshooting Common Issues

  • MongoDB Connection Issues: Ensure MongoDB is running on your local machine.
  • Port Conflicts: If port 3000 is in use, change the PORT variable to a different number.
  • Validation Errors: Ensure that the request body matches the expected schema.

Conclusion

Congratulations! You’ve successfully created a CRUD application using Node.js and Express. This foundational knowledge equips you with the skills to build more complex applications, integrate with front-end frameworks, and handle user authentication. Keep experimenting with different features and optimizations to enhance your application further. Happy coding!

SR
Syed
Rizwan

About the Author

Syed Rizwan is a Machine Learning Engineer with 5 years of experience in AI, IoT, and Industrial Automation.