Setting Up Drizzle ORM with PostgreSQL in Node.js
Introduction
Drizzle ORM provides type-safe database queries. This guide covers installing and configuring Drizzle ORM with PostgreSQL in a Node.js project.
Prerequisites
- Node.js >=16
- PostgreSQL instance
Step 1: Initialize Project
mkdir drizzle-postgres
cd drizzle-postgres
npm init -y
npm install drizzle-orm pg pg-format
Step 2: Configure Database Connection
Create src/db.ts
:
import { Pool } from 'pg';
import { drizzle } from 'drizzle-orm';
const pool = new Pool({
connectionString: process.env.DATABASE_URL || 'postgres://user:pass@localhost:5432/mydb',
});
export const db = drizzle(pool);
Step 3: Define Schema
Create src/schema.ts
:
import { pgTable, varchar, integer, serial } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: serial('id').primaryKey(),
email: varchar('email', { length: 255 }).notNull(),
age: integer('age'),
});
Step 4: Perform Queries
Create src/index.ts
:
import { db } from './db';
import { users } from './schema';
async function main() {
// Insert user
const [inserted] = await db.insert(users).values({ email: 'alice@example.com', age: 30 }).returning();
console.log('Inserted user:', inserted);
// Select users
const allUsers = await db.select().from(users);
console.log('All users:', allUsers);
}
main().catch(console.error);
Step 5: Run the App
npm run ts-node src/index.ts
Summary
Drizzle ORM’s clean API and TypeScript support simplify PostgreSQL interactions, enabling safe and maintainable database code.