Skip to main content
Neon Postgres Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Connect a SolidStart application to Neon

SolidStart is an open source meta framework designed to integrate the components that make up a web application.1. This guide explains how to connect SolidStart with Neon using a secure server side re...

Pre-built prompt for connecting SolidStart applications to Neon

SolidStart is an open-source meta-framework designed to integrate the components that make up a web application.1. This guide explains how to connect SolidStart with Neon using a secure server-side request.

To create a Neon project and access it from a SolidStart application:

  1. Create a Neon project

    If you do not have one already, create a Neon project. Save your connection details including your password. They are required when defining connection settings.

    1. Navigate to the Projects page in the Neon Console.
    2. Click New Project.
    3. Specify your project settings and click Create Project.
  2. Create a SolidStart project and add dependencies

    1. Create a SolidStart project if you do not have one. For instructions, see Quick Start, in the SolidStart documentation.
    2. Add project dependencies using one of the following commands:npm install @neondatabase/serverlessnpm install postgresnpm install pg
  3. Store your Neon credentials

    Add a .env file to your project directory and add your Neon connection string to it. You can find the connection string for your database by clicking the Connect button in the Console nav. For more information, see Connect from any application.

    Bash
    DATABASE_URL="postgresql://<user>:<password>@<endpoint_hostname>.neon.tech:<port>/<dbname>?sslmode=require&channel_binding=require"
  4. Configure the Postgres client

    There a multiple ways to make server-side requests with SolidStart. See below for the different implementations.

    Server-Side Data Loading

    To load data on the server in SolidStart, add the following code snippet to connect to your Neon database:

    Neon serverless driver
    import { neon } from "@neondatabase/serverless";
    import { createAsync, query } from "@solidjs/router";
    
    const getVersion = query(async () => {
        "use server";
        const sql = neon(process.env.DATABASE_URL);
        const response = await sql`SELECT version()`;
        const { version } = response[0];
    
        return version;
    }, 'version')
    
    export const route = {
      preload: () => getVersion(),
    };
    
    export default function Page() {
      const version = createAsync(() => getVersion());
      return <>{version()}</>;
    }
    postgres.js
    import postgres from 'postgres';
    import { createAsync, query } from "@solidjs/router";
    
    const getVersion = query(async () => {
        "use server";
        const sql = postgres(process.env.DATABASE_URL, { ssl: 'require' });
        const response = await sql`SELECT version()`;
        return response[0].version;
    }, 'version')
    
    export const route = {
      preload: () => getVersion(),
    };
    
    export default function Page() {
      const version = createAsync(() => getVersion());
      return <>{version()}</>;
    }
    node-postgres
    import pg from 'pg';
    import { createAsync, query } from "@solidjs/router";
    
    const getVersion = query(async () => {
        "use server";
        const pool = new pg.Pool({
            connectionString: process.env.DATABASE_URL,
        });
        const client = await pool.connect();
        const response = await client.query('SELECT version()');
        return response.rows[0].version;
    }, 'version')
    
    export const route = {
      preload: () => getVersion(),
    };
    
    export default function Page() {
      const version = createAsync(() => getVersion());
      return <>{version()}</>;
    }

    Server Endpoints (API Routes)

    In your server endpoints (API Routes) in your SolidStart application, use the following code snippet to connect to your Neon database:

    Neon serverless driver
    // File: routes/api/test.ts
    
    import { neon } from '@neondatabase/serverless';
    import { json } from '@solidjs/router'
    
    export async function GET() {
      const sql = neon(process.env.DATABASE_URL!);
      const response = await sql`SELECT version()`;
    
      return json(response[0]);
    }
    postgres.js
    // File: routes/api/test.ts
    
    import postgres from 'postgres';
    import { json } from '@solidjs/router';
    
    export async function GET() {
      const sql = postgres(process.env.DATABASE_URL, { ssl: 'require' });
      const response = await sql`SELECT version()`;
    
      return json(response[0]);
    }
    node-postgres
    // File: routes/api/test.ts
    
    import { Pool } from 'pg';
    import { json } from '@solidjs/router';
    
    const pool = new Pool({
      connectionString: process.env.DATABASE_URL,
      ssl: true,
    });
    
    export async function GET() {
      const client = await pool.connect();
      let data = {};
      try {
        const { rows } = await client.query('SELECT version()');
        data = rows[0];
      } finally {
        client.release();
      }
      return json(data);
    }
  5. Run the app

    When you run npm run dev you can expect to see the following on localhost:3000:

    Bash
    PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit

Join our Discord Server to ask questions or see what others are doing with Neon. For paid plan support options, see Support.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu