Javascript & Typescript
Connecting with Javascript & Typescript
Javascript (and subsequently Typescript) has a NPM package called “pg”. Many other Javascript libraries use this library for their underlying connection. For instance, there area two libraries called “sequelize” and another one called “Postgres”. Both of them use “pg” under the hood, so the connection methods are the same.
If you are using Prisma, we have a specific tutorial for Javascript with Prisma
TL;DR:
The #1 question we have with Node is related to the self-signed SSL certificates used by Crunchy Bridge. The typical error looks like this:
"name":"PostgresError","message":"no pg_hba.conf entry for host \"127.0.0.1\",
user \"application\", database \"my-db\", no encryption"
There are two options here:
- Download and add the team certificate to your client, in order to enable verification of the self-signed cert.
- Disable certificate verification for development
Disabling certificate verification is slightly messy in node-postgres. Set rejectUnauthorized: false
and do not add any ssl arguments to the connection string. Here’s an example:
const client = new Client({
connectionString: 'postgres://user:[email protected]:port/db',
ssl: {
require: true, // this line is not necessary, but it's good to be explicit
rejectUnauthorized: false
}
});
Now, for the complete walkthrough.
Create your Crunchy Bridge Postgres Cluster
Creating a Crunchy Bridge cluster is pretty simple. Log into your Crunchy Bridge account, and click “Create Cluster”, then follow the cluster create form.
From here, we’ll want to get a “connection string” that we can use later. It looks like this:
postgres://user:[email protected]:port/database?setting=value
Once your Postgres cluster has a status of “ready” (a few minutes), click on the “Connections” tab for your connection string.

We will set this value as a DATABASE_URL
value later when connecting to the database.
Preparation
For this tutorial, first create a project directory. Then, run the following commands while within that directory.
Installing pg package
Run the following to install the “pg” package:
bash> npm install pg
Connecting to Postgres
Create a file called db-test.js
, and add the following content to it:
const { Client } = require('pg')
const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: {
require: true,
rejectUnauthorized: false
}
})
await client.connect()
const res = await client.query('SELECT $1::text as message', ['Hello world!'])
console.log(res.rows[0].message) // Hello world!
await client.end()
Then, run the following from bash:
bash> DATABASE_URL=<connection string from above> node db-test.js
By prefixing the command with the DATABASE_URL
, it passes the value as
an environmental variable. Then, the application code picks up the
DATABASE_URL
with process.env.DATABASE_URL
.