Back to Prisma

TypeORM

apps/docs/content/docs/(index)/prisma-postgres/quickstart/typeorm.mdx

latest4.3 KB
Original Source

TypeORM is a TypeScript ORM. In this guide, you'll learn how to connect TypeORM to Prisma Postgres.

Prerequisites

  • Node.js version 16 or higher
  • TypeScript version 4.5 or higher

1. Generate a TypeORM project

Use the TypeORM CLI to generate a starter project:

npm
npx typeorm init --name typeorm-quickstart --database postgres

This command will generate a new project with the following structure:

typeorm-quickstart
├── src
│   ├── entity
│   │   └── User.ts       # Sample entity
│   ├── migration         # Migrations folder
│   ├── data-source.ts    # Data source configuration
│   └── index.ts          # Application entry point
├── .gitignore
├── package.json
├── README.md
└── tsconfig.json

2. Install dependencies

Navigate to the project directory and install dependencies:

npm
cd typeorm-quickstart
npm install

Install dotenv to load environment variables:

npm
npm install dotenv

3. Create a Prisma Postgres database

You can create a Prisma Postgres database using the create-db CLI tool. Follow these steps to create your Prisma Postgres database:

npm
npx create-db

Then the CLI tool should output:

bash
┌  🚀 Creating a Prisma Postgres database
│
│  Provisioning a temporary database in us-east-1...
│
│  It will be automatically deleted in 24 hours, but you can claim it.
│
◇  Database created successfully!
│
│
●  Database Connection
│
│
│    Connection String:
│
│    postgresql://hostname:[email protected]:5432/postgres?sslmode=require
│
│
◆  Claim Your Database
│
│    Keep your database for free:
│
│    https://create-db.prisma.io/claim?CLAIM_CODE
│
│    Database will be deleted on 11/18/2025, 1:55:39 AM if not claimed.
│
└

Create a .env file and add the connection string from the output:

text
DATABASE_URL="postgresql://hostname:[email protected]:5432/postgres?sslmode=require"

:::warning

Never commit .env files to version control. Add .env to your .gitignore file to keep credentials secure.

:::

The database created is temporary and will be deleted in 24 hours unless claimed. Claiming moves the database into your Prisma Data Platform account. Visit the claim URL from the output to keep your database.

:::note

To learn more about the create-db CLI tool, see the create-db documentation.

:::

4. Configure database connection

Update the src/data-source.ts file to use your Prisma Postgres connection:

typescript
import "reflect-metadata";
import "dotenv/config"; // [!code ++]
import { DataSource } from "typeorm";
import { User } from "./entity/User";

// Parse DATABASE_URL into connection parameters // [!code ++]
function parseConnectionString(url: string) {
  // [!code ++]
  const parsed = new URL(url); // [!code ++]
  return {
    // [!code ++]
    host: parsed.hostname, // [!code ++]
    port: parseInt(parsed.port), // [!code ++]
    username: parsed.username, // [!code ++]
    password: parsed.password, // [!code ++]
    database: parsed.pathname.slice(1), // Remove leading '/' // [!code ++]
  }; // [!code ++]
} // [!code ++]

const connectionParams = parseConnectionString(process.env.DATABASE_URL!); // [!code ++]

export const AppDataSource = new DataSource({
  type: "postgres",
  host: "localhost", // [!code --]
  port: 5432, // [!code --]
  username: "test", // [!code --]
  password: "test", // [!code --]
  database: "test", // [!code --]
  ...connectionParams, // [!code ++]
  ssl: true, // [!code ++]
  synchronize: true,
  logging: false,
  entities: [User],
  migrations: [],
  subscribers: [],
});

5. Run the application

Start the application:

npm
npm start

You should see output indicating the connection was successful and a new user was inserted into the database:

bash
Inserting a new user into the database...
Saved a new user with id: 1
Loading users from the database...
Loaded users:  [ User { id: 1, firstName: 'Timber', lastName: 'Saw', age: 25 } ]

Next steps

You've successfully connected TypeORM to Prisma Postgres! For more advanced features like entities, migrations, and queries, see the TypeORM documentation.