๐Ÿ“๐Ÿ” Create, Read, Update, Delete: Build a CRUD App with JavaScript and Node.js ๐Ÿš€๐Ÿ‘จโ€๐Ÿ’ป (Part 1 of WebDev Series)

ยท

6 min read

Table of contents

No heading

No headings in the article.

Building a Basic CRUD Application with JavaScript and Node.js

In this tutorial, we'll walk you through the process of building a basic CRUD (Create, Read, Update, and Delete) application using JavaScript and Node.js. By the end of this guide, you'll have a solid understanding of how to create a simple, yet functional web application that can interact with a database.

Please note that while this tutorial aims to be beginner-friendly, some familiarity with JavaScript and Node.js will be helpful.

Table of Contents

  1. Setting Up the Environment

  2. Creating a Simple Web Server

  3. Implementing Routes and Controllers

  4. Integrating a Database

  5. Creating the Frontend

  6. Conclusion

  7. FAQs

1. Setting Up the Environment

Before diving into building our CRUD application, we need to set up our development environment. You'll need to have Node.js installed on your computer. Download the latest version from the official Node.js website.

Next, create a new folder for your project and open it in your favorite code editor. We'll be using this folder to store all our project files.

2. Creating a Simple Web Server

To create a simple web server, we'll use the popular Node.js framework, Express.js. Start by installing Express:


npm init -y
npm install express

Now, create a new file named app.js and add the following code:


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

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

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

To start the server, run node app.js in your terminal. The server will now listen on port 3000, and you can view the "Hello, World!" message by visiting http://localhost:3000 in your browser.

3. Implementing Routes and Controllers

Now that we have a basic web server, let's implement the CRUD functionality. We'll begin by creating routes and controllers for each CRUD operation.

  1. Create a new folder named controllers.

  2. Inside the controllers folder, create a new file named itemController.js.

In itemController.js, add the following code to create the CRUD functions:


exports.createItem = (req, res) => {
  // Your create logic goes here
};

exports.readItems = (req, res) => {
  // Your read logic goes here
};

exports.updateItem = (req, res) => {
  // Your update logic goes here
};

exports.deleteItem = (req, res) => {
  // Your delete logic goes here
};

Now, let's create routes for these functions. In your app.js file, add the following code:


const itemController = require('./controllers/itemController');

app.post('/items', itemController.createItem);
app.get('/items', itemController.readItems);
app.put('/items/:id', itemController.updateItem);
app.delete('/items/:id', itemController.deleteItem);

We now have routes and controllers for each CRUD operation. Next, let's integrate a database to store our data.

4. Integrating a Database

For this tutorial, we'll use MongoDB as our database. To connect to MongoDB, we'll use the Mongoose library. Install Mongoose by running:


npm install mongoose

Create a new folder named models and a new file named itemModel.js inside it. In itemModel.js, add the following code to define our Item schema and model:


const mongoose = require('mongoose');

const itemSchema = new mongoose.Schema({
  name: { type: String, required: true },
  description: { type: String, required: true },
  price: { type: Number, required: true },
});

const Item = mongoose.model('Item', itemSchema);

module.exports = Item;

Now, let's connect to the MongoDB database. In your app.js file, add the following code:


const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/crud_app', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
mongoose.connection.on('connected', () => {
  console.log('Connected to MongoDB');
});

Don't forget to require the itemModel.js in your itemController.js:


const Item = require('../models/itemModel');

With our database connected, we can now implement the CRUD functions in our itemController.js:


exports.createItem = (req, res) => {
  // Your create logic goes here
  const newItem = new Item(req.body);
  newItem.save((err, item) => {
    if (err) {
      res.status(500).send(err);
    }
    res.status(201).json(item);
  });
};

exports.readItems = (req, res) => {
  // Your read logic goes here
  Item.find({}, (err, items) => {
    if (err) {
      res.status(500).send(err);
    }
    res.status(200).json(items);
  });
};

exports.updateItem = (req, res) => {
  // Your update logic goes here
  Item.findOneAndUpdate(
    { _id: req.params.id },
    req.body,
    { new: true, useFindAndModify: false },
    (err, item) => {
      if (err) {
        res.status(500).send(err);
      }
      res.status(200).json(item);
    }
  );
};

exports.deleteItem = (req, res) => {
  // Your delete logic goes here
  Item.findOneAndDelete({ _id: req.params.id }, (err, item) => {
    if (err) {
      res.status(500).send(err);
    }
    res.status(200).json({ message: 'Item deleted successfully' });
  });
};

5. Creating the Frontend

Now that we have our backend complete, let's create a simple frontend to interact with our CRUD application. For this tutorial, we'll use plain HTML, CSS, and JavaScript. However, you can use any frontend framework or library you prefer.

  1. Create a new folder named public.

  2. Inside the public folder, create three files: index.html, styles.css, and script.js.

In index.html, add the following code:


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CRUD Application</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <h1>CRUD Application</h1>
  <!-- Your form and list elements go here -->
  <script src="script.js"></script>
</body>
</html>

Now, create a simple form and list to add, display, update, and delete items. Add the necessary HTML elements and JavaScript code to interact with the backend using AJAX.

  1. Conclusion

In this tutorial, we've walked through the process of building a basic CRUD application using JavaScript and Node.js. We've created a simple web server with Express.js, implemented routes and controllers for CRUD operations, integrated MongoDB as our database, and built a basic frontend to interact with our backend.

With this foundation, you can now explore more advanced features and tools to enhance your CRUD application. You can integrate user authentication, create a more complex frontend using a modern framework like React or Vue.js, or even explore deploying your application using platforms like Heroku or AWS.

FAQs

  1. Can I use a different database for my CRUD application? Yes, you can use other databases like MySQL, PostgreSQL, or even a NoSQL database like Firebase. You'll need to adjust your code and install the appropriate libraries for the database you choose.

  2. How can I secure my CRUD application? To secure your application, you can implement user authentication and authorization, use HTTPS for secure data transmission, validate user inputs, and follow best practices for secure coding.

  3. Can I build a CRUD application with other programming languages? Yes, you can build a CRUD application using other programming languages and frameworks, such as Python with Django or Flask, Ruby with Ruby on Rails, or PHP with Laravel.

  4. How can I deploy my CRUD application? You can deploy your application on various platforms like Heroku, AWS, Google Cloud Platform, or DigitalOcean. Each platform offers different features and pricing, so choose the one that best suits your needs.

  5. How can I optimize my CRUD application for performance? To optimize your application, consider using techniques like database indexing, caching, code optimization, and server-side rendering. Additionally, you can use performance analysis tools to identify bottlenecks and areas for improvement.

Did you find this article valuable?

Support Learn!Things by becoming a sponsor. Any amount is appreciated!

ย