Joshua's Cheatsheets
Light
help

TypeORM Cheatsheet

===== WIP ======

Repo

https://github.com/typeorm/typeorm

Resources

What Type Link
Sequelize JS Competing NodeJS ORM. Syntax is much closer to Laravel Eloquent, but has less TS and non-node support. Docs

Columns

Columns - Decorators

Decorator What Type Eloquent Equivalent
@column() A regular column any (specify by type of class member) $table->{{type}}
@PrimaryGeneratedColumn() [AUTO] Auto-incr. PK number $table->increments('id')*
@CreateDateColumn() [AUTO] Created Timestamp Date $table->timestamps()

* = BigInt is not yet completely supported in JS land and not in TypeOrm. So there is not really an equivalent to Eloquent's $table->bigIncrements() or $table->bigInteger(). In fact, this is something to be wary of if you are coming from Laravel, since default migrations now use BigInts over there.

PrimaryGeneratedColumn(), in MySQL, generates an INT() column, which should have a max size of 2147483647 (unsigned).

Columns - Data Types

Full list can be found here

Cheatsheet for MySQL:

___ ___ ___ ___
bit int integer tinyint
smallint mediumint bigint float
double double precision dec decimal
numeric fixed bool boolean
date datetime timestamp time
year char nchar national char
varchar nvarchar national varchar text
tinytext mediumtext blob longtext
tinyblob mediumblob longblob enum
json binary varbinary geometry
point linestring polygon multipoint
multilinestring multipolygon geometrycollection ---

Columns - "Gotchas"

  • When creating a foreign column, with something like @ManyToOne, the generator will automatically put the string 'id' at the end of whatever you put. So this:

    @manyToOne(...)
    public userId: User;

    ... Would actually generate a column name of `"userIdId". Whoops!

Markdown Source Last Updated:
Tue Aug 27 2019 07:54:30 GMT+0000 (Coordinated Universal Time)
Markdown Source Created:
Mon Aug 19 2019 17:06:24 GMT+0000 (Coordinated Universal Time)