Skip to main content

Postgres.js

Connecting with Postgres.js

Postgres.js is a full-featured Postgres client for Node.js and Deno.

  1. Install

    Install Postgres.js and related dependencies.

    npm i postgres
  2. Connect

    Create a db.js file with the connection details.

    To get your connection details, go to the Connect panel. Choose Transaction pooler if you're on a platform with transient connections, such as a serverless function, and Session pooler if you have a long-lived connection. Copy the URI and save it as the environment variable DATABASE_URL.

    Caution

    postgres.js pipelines queries by default. Combined with the shared pooler transaction mode, this can hang queries or return mismatched rows. postgres.js has no working option to turn pipelining off directly: max_pipeline: 0 breaks sql.begin() transactions instead, a known upstream bug.

    For more about pipelining with postgres.js, contact support.

    // db.js
    import postgres from 'postgres'
    
    const connectionString = process.env.DATABASE_URL
    const sql = postgres(connectionString, { prepare: false })
    
    export default sql
  3. Execute commands

    Use the connection to execute commands.

    import sql from './db.js'
    
    async function getUsersOver(age) {
      const users = await sql`
        select name, age
        from users
        where age > ${ age }
      `
      // users = Result [{ name: "Walter", age: 80 }, { name: 'Murray', age: 68 }, ...]
      return users
    }