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.
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 [Manage SQL users on a cluster.
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: