Sling Academy
Home/Node.js/How to Use AWS RDS with Express.js & Node.js

How to Use AWS RDS with Express.js & Node.js

Last updated: December 28, 2023

Overview

In this tutorial, we’ll cover the basics of integrating Amazon Web Services’ Relational Database Service (AWS RDS) with a Node.js application that uses Express.js as its web framework. We’ll begin by setting up an AWS RDS instance and then move on to connecting it to our Express.js application. Throughout this guide, we will provide multiple code examples to illustrate the process from start to finish.

Before we dive in, it’s important to understand that AWS RDS is a managed database service that allows you to operate and scale a relational database in the cloud. It provides a variety of relational database engines to choose from including PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server.

Express.js, on the other hand, is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. When combined with Node.js, it’s an excellent choice for creating server-side applications in JavaScript.

Note: This guide assumes that you have basic knowledge of Node.js, Express.js, and SQL databases, as well as an AWS account.

Setting up AWS RDS

Let’s start by setting up an AWS RDS instance.

  1. Sign in to the AWS Management Console and open the RDS dashboard.
  2. Click ‘Create database’ and select the database engine of your choice. For the purpose of this tutorial, we will use PostgreSQL.
  3. Choose the template that suits your use case, for example, ‘Free tier’ for testing purposes.
  4. Specify the DB instance identifier, master username, and password.
  5. Configure the instance size, storage, and other settings as needed.
  6. Under ‘Connectivity’, ensure that the database is accessible publicly if you wish to connect from your local environment.
  7. Add the necessary inbound rules to your database’s security group to allow traffic from your application’s IP address.
  8. Review the settings and click ‘Create database’.

After creating your RDS instance, note down the endpoint and port as you will need them to connect to your database from the Node.js application.

Integrating AWS RDS with Node.js and Express.js

With our RDS instance up and running, the next step is to connect it to our Express.js application.

1. First, you’ll need to install the necessary Node.js module to interact with your chosen database. For PostgreSQL, you can install pg:

npm install pg

2. Next, create a database connection pool in your Node.js application:

const { Pool } = require('pg');

const pool = new Pool({
  user: 'master-username',
  host: 'rds-instance-endpoint',
  database: 'myDatabase',
  password: 'master-password',
  port: 'rds-port',
});

3. Now, you can use the pool to execute queries. Here’s an example of how to integrate a GET route with a database query:

const express = require('express');
const app = express();

app.get('/products', async (req, res) => {
  try {
    const result = await pool.query('SELECT * FROM products');
    res.json(result.rows);
  } catch (err) {
    console.error(err);
    res.status(500).send('Server error');
  }
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

This code sets up an Express.js server and a route that fetches all products from our database.

For more advanced scenarios, you might need to manage transactions, use environment variables to store sensitive information, and optimize the connection for production.

Conclusion

To wrap up, integrating AWS RDS with an Express.js and Node.js application is straightforward once you understand the steps involved. We’ve looked at setting up an RDS instance, connecting it to a Node.js application, and performing CRUD operations using Express.js routes. While this guide provides the essentials, there is much more to explore, such as implementing advanced database patterns, enhancing security, and optimizing for performance.

With the ease of using AWS RDS and the flexibility of Express.js and Node.js, you can build scalable and resilient applications that can handle heavy traffic and complex data operations. Happy coding!

Next Article: How to Use Passport in Express for Authentication

Previous Article: Node.js & Express: How to Upload Files Using Multer

Series: Node.js & Express Tutorials

Node.js

You May Also Like

  • NestJS: How to create cursor-based pagination (2 examples)
  • Cursor-Based Pagination in SequelizeJS: Practical Examples
  • MongooseJS: Cursor-Based Pagination Examples
  • Node.js: How to get location from IP address (3 approaches)
  • SequelizeJS: How to reset auto-increment ID after deleting records
  • SequelizeJS: Grouping Results by Multiple Columns
  • NestJS: Using Faker.js to populate database (for testing)
  • NodeJS: Search and download images by keyword from Unsplash API
  • NestJS: Generate N random users using Faker.js
  • Sequelize Upsert: How to insert or update a record in one query
  • NodeJS: Declaring types when using dotenv with TypeScript
  • Using ExpressJS and Multer with TypeScript
  • NodeJS: Link to static assets (JS, CSS) in Pug templates
  • NodeJS: How to use mixins in Pug templates
  • NodeJS: Displaying images and links in Pug templates
  • ExpressJS + Pug: How to use loops to render array data
  • ExpressJS: Using MORGAN to Log HTTP Requests
  • NodeJS: Using express-fileupload to simply upload files
  • ExpressJS: How to render JSON in Pug templates