Recs.
Updated
Specs
Pros
Pro Weak Controller Generation and Discovery
Loopback and Sails implement API generation natively, with lots of features. TypeORM integrates Express route / endpoint / controller generation via an extension.
Loopback implements complex database discovery with SQL and NoSQL stores. TypeORM can also generate models based on an existing database, but it is done via extension and the database must be SQL: Microsoft SQL Server, PostgreSQL, MySQL, or MariaDB.
Still, these are great features most Node ORMs today do not have at all.
Cons
Con Based on decorators
TypeORM relies on decorators, and obsolete implementations of them at that. To add insult to injury, simple decorator syntax is not provided. So you need to write e.g. @Column()
instead of @Column
. This is an issue with the API design, a very nasty one (Angular does it is not a good reason to do anything).
Con Obnoxious syntax
@Column()
public foo: string | null;
Should just do the right thing (a nullable column that has correct type annotation on the field). Instead this has to be:
@Column({ type: "string", nullable: true })
public code?: string | null;
Con In transactions when it throws an error, it doesn't roll back all operations within transactions
Con Confuses Classes with Types
The conflation of types and classes is a bad thing for JavaScript and TypeScript. To make matters worse, they often lead to the maximally complicated solution, especially for simple problems, result in awkward interop, and are incompatible with the extensive syntactic sugar that JavaScript provides for objects.