Back to Drizzle Orm

Drizzle Supabase

src/content/docs/connect-supabase.mdx

latest2.3 KB
Original Source

import Tab from '@mdx/Tab.astro'; import Tabs from '@mdx/Tabs.astro'; import Npm from "@mdx/Npm.astro"; import Callout from '@mdx/Callout.astro'; import Steps from '@mdx/Steps.astro'; import AnchorCards from '@mdx/AnchorCards.astro'; import Prerequisites from "@mdx/Prerequisites.astro"; import WhatsNextPostgres from "@mdx/WhatsNextPostgres.astro";

Drizzle <> Supabase

<Prerequisites> - Database [connection basics](/docs/connect-overview) with Drizzle - Drizzle PostgreSQL drivers - [docs](/docs/get-started-postgresql) </Prerequisites>

According to the official website, Supabase is an open source Firebase alternative for building secure and performant Postgres backends with minimal configuration.

Checkout official Supabase + Drizzle docs.

Step 1 - Install packages

<Npm> drizzle-orm postgres -D drizzle-kit </Npm>

Step 2 - Initialize the driver and make a query

typescript
import { drizzle } from 'drizzle-orm/postgres-js'

const db = drizzle(process.env.DATABASE_URL);

const allUsers = await db.select().from(...);

If you need to provide your existing driver:

typescript
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

const client = postgres(process.env.DATABASE_URL)
const db = drizzle({ client });

const allUsers = await db.select().from(...);

If you decide to use connection pooling via Supabase (described here), and have "Transaction" pool mode enabled, then ensure to turn off prepare, as prepared statements are not supported.

typescript
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'

// Disable prefetch as it is not supported for "Transaction" pool mode 
const client = postgres(process.env.DATABASE_URL, { prepare: false })
const db = drizzle({ client });

const allUsers = await db.select().from(...);

Connect to your database using the Connection Pooler for serverless environments, and the Direct Connection for long-running servers.

What's next?

<WhatsNextPostgres/>