This tutorial shows you how run a simple application built with TypeORM.
Step 1. Start CockroachDB
Create a free cluster
- If you haven't already, sign up for a CockroachDB Cloud account.
- Log in to your CockroachDB Cloud account.
- On the Clusters page, click Create Cluster.
On the Create your cluster page, select Serverless.
Unless you change your monthly budget, this cluster will be free forever.
Click Create cluster.
Your cluster will be created in a few seconds and the Create SQL user dialog will display.
Create a SQL user
The Create SQL user dialog allows you to create a new SQL user and password.
- Enter a username in the SQL user field or use the one provided by default.
- Click Generate & save password.
- Copy the generated password and save it in a secure location.
Click Next.
Currently, all new users are created with full privileges. For more information and to change the default settings, see Granting privileges and Using roles.
Get the connection information
The Connect to cluster dialog shows information about how to connect to your cluster.
- Select Parameters only from the Select option dropdown.
- Copy the connection information for each parameter displayed and save it in a secure location.
- If you haven't already, download the CockroachDB binary.
Run the
cockroach start-single-node
command:$ cockroach start-single-node --advertise-addr 'localhost' --insecure
This starts an insecure, single-node cluster.
Take note of the following connection information in the SQL shell welcome text:
CockroachDB node starting at 2021-08-30 17:25:30.06524 +0000 UTC (took 4.3s) build: CCL v21.1.6 @ 2021/07/20 15:33:43 (go1.15.11) webui: http://localhost:8080 sql: postgresql://root@localhost:26257?sslmode=disable
You'll use the
sql
connection string to connect to the cluster later in this tutorial.
The --insecure
flag used in this tutorial is intended for non-production testing only. To run CockroachDB in production, use a secure cluster instead.
Step 2. Get the code
Clone the code's GitHub repository:
$ git clone git@github.com:cockroachlabs/example-app-typescript-typeorm.git
Navigate to the repo directory and install the application dependencies:
$ cd example-app-typescript-typeorm
$ npm install
Step 3. Configure your CockroachDB connection
Open the
datasource.ts
file, and comment out thessl: true
,extra
andoptions
configuration properties.In the
datasource.ts
file, uncommentssl: { rejectUnauthorized: false }
.Warning:Only use
ssl: { rejectUnauthorized: false }
in development, for insecure connections.The
DataSource
configuration should look similar to the following:export const AppDataSource = new DataSource({ type: "cockroachdb", url: process.env.DATABASE_URL, ssl: { rejectUnauthorized: false }, // For insecure connections only /* ssl: true, extra: { options: "--cluster=<routing-id>" }, */ synchronize: true, logging: false, entities: ["src/entity/**/*.ts"], migrations: ["src/migration/**/*.ts"], subscribers: ["src/subscriber/**/*.ts"], })
Set the
DATABASE_URL
environment variable to the connection string provided in thecockroach
welcome text:export DATABASE_URL="postgresql://root@localhost:26257?sslmode=disable"
Open the
datasource.ts
file, and edit theoptions: "--cluster=<routing-id>"
configuration property to specify the routing ID to your serverless cluster.Set the
DATABASE_URL
environment variable to a CockroachDB connection string compatible with TypeORM.export DATABASE_URL="<connection-string>"
TypeORM accepts the following format for CockroachDB Serverless connection strings:
postgresql://<username>:<password>@<host>:<port>/<database>
Step 4. Run the code
Start the application:
$ npm start
You should see the following output in your terminal:
Inserting a new account into the database...
Saved a new account.
Printing balances from account 1db0f34a-55e8-42e7-adf1-49e76010b763.
[
Account { id: '1db0f34a-55e8-42e7-adf1-49e76010b763', balance: 1000 }
]
Inserting a new account into the database...
Saved a new account.
Printing balances from account 4e26653a-3821-48c8-a481-47eb73b3e4cc.
[
Account { id: '4e26653a-3821-48c8-a481-47eb73b3e4cc', balance: 250 }
]
Transferring 500 from account 1db0f34a-55e8-42e7-adf1-49e76010b763 to account 4e26653a-3821-48c8-a481-47eb73b3e4cc.
Transfer complete.
Printing balances from account 1db0f34a-55e8-42e7-adf1-49e76010b763.
[
Account { id: '1db0f34a-55e8-42e7-adf1-49e76010b763', balance: 1000 }
]
Printing balances from account 4e26653a-3821-48c8-a481-47eb73b3e4cc.
[
Account { id: '4e26653a-3821-48c8-a481-47eb73b3e4cc', balance: 250 }
]
What's next?
Read more about using the TypeORM.
You might also be interested in the following pages: