Connect a Node.js application to PlanetScale
Spin up a PlanetScale MySQL serverless database in seconds and connect to a Node.js application
Introduction
In this tutorial, you'll create a simple Node.js and Express.js application and connect it to a PlanetScale database.
Prerequisites
Set up the database
First, create a new database with the following command:
Next, let's add some data to the database. You'll create a new table called users
and add one record to it.
To do this, use the PlanetScale CLI shell to open a MySQL shell where you can manipulate your database. You may need to install the MySQL command line client if you haven't already.
A branch, main
, was automatically created when you created your database, so you can use that for BRANCH_NAME
.
Create the users
table:
Then, add a record to it with:
You can verify it was added with:
Next, you'll set up the Express starter application.
Set up the starter Node.js app
Clone the starter repository:
Enter into the folder and install the dependencies with:
Now that your application is set up and the database is ready to be used, let's connect them.
Connect to PlanetScale with Express.js
There are two ways to connect to PlanetScale:
- With an auto-generated username and password
- Using the PlanetScale proxy with the CLI
Both options are covered below.
Option 1: Connect with username and password (Recommended)
These instructions show you how to generate a set of credentials with the PlanetScale CLI.
You can also get these exact values to copy/paste from your PlanetScale dashboard. In the dashboard, click on the database > "Connect" > "Connect with" language dropdown > "Node.js". If the password is blurred, click "New password". Skip to step 3 once you have these credentials.
- Authenticate the CLI with the following command:
- Using the PlanetScale CLI, create a new username and password for the branch of your database:
The PASSWORD_NAME
value represents the name of the username and password being generated. You can have multiple credentials for a branch, so this gives you a way to categorize them. To manage your passwords in the dashboard, go to your database overview page, click "Settings", and then click "Passwords".
Take note of the values returned to you, as you won't be able to see this password again.
- Next, create your
.env
file by renaming the.env.example
file to.env
:
- Use the values from the CLI output in step 1 to construct your connection string that will be used to connect your Node app to your PlanetScale database. Create your connection string in the following format:
- In the
.env
file, fill in theDATABASE_URL
variable with the value you constructed above. It should look something like this:
- Finally, run your Express application with:
Navigate to http://localhost:3000 and you'll see the data from your users
table!
Option 2: Using the PlanetScale proxy with the CLI
Use the following command to create a connection to your database and start the application:
Running pscale connect
with the execute flag will pass a DATABASE_URL
to the Node application, enabling it to connect to PlanetScale. Don't forget to look in app.js
to see how the DATABASE_URL is used.
Navigate to http://localhost:3000 and you'll see the data from your users
table!
What's next?
Learn more about how PlanetScale allows you to make non-blocking schema changes to your database tables without locking or causing downtime for production databases. If you're interested in learning how to secure your application when connecting to PlanetScale, please read Connecting to PlanetScale securely.
Need help?
Get help from the PlanetScale support team, or join our GitHub Discussion board to see how others are using PlanetScale.