Skip to main content
Example of MikroORM in action

TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns.

[object Object]

Implicit Transactions

MikroORM allows handling transactions automatically. When you call em.flush(), all computed changes are wrapped inside a database transaction.

[object Object]

DRY Entities

Uses source code analysis so you do not have to repeat yourself when defining entities. Simply define correct TypeScript types and you are good to go!

[object Object]

Supports both SQL and NoSQL

Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases, and more can be supported via custom drivers right now.

[object Object]

Migrations

Keep your schema in sync with SchemaGenerator and Migrator. Supports both up and down migrations.

[object Object]

Seeder

With the Seeder and seeding factories, we can generate fake data of any volume/shape and seed the database with ease.

[object Object]

Automatic Batching

Thanks to the UnitOfWork, all queries it fires are automatically batched. Inserts, updates, deletes - you name it!

[object Object]

Events

Powerful event system allows to hook into not only the entity lifecycle. Want to alter how the UnitOfWork works? Try onFlush event!

[object Object]

QueryBuilder

Includes metadata-aware QueryBuilder with auto-joining support. Need more flexibility? We got you covered!

[object Object]

Filters

Define and control your common filters globally. Want to show only results relevant for a given tenant? Or maybe you want to automatically hide all soft-deleted entities?