📄️ Usage with SQL Drivers
To use mikro-orm with MySQL database, simply install the @mikro-orm/mysql dependency and set the type option to mysql when initializing ORM. Since v4 it is no longer needed to install the mysql2 package manually.
📄️ Usage with MongoDB
To use MikroORM with mongo database, do not forget to install @mikro-orm/mongodb dependency. Then call MikroORM.init() as part of bootstrapping your app:
📄️ Usage with NestJS
📄️ Usage with Vanilla JS
📄️ Usage with Babel
When compiling TS via babel, decorators are by default handled different implementation than what tsc uses. To make the metadata extraction from decorators via Babel work, we need to do use following plugins:
📄️ Usage with AdminJS
📄️ Using Entity Constructors
Internally, MikroORM never calls entity constructor on managed entities (those loaded via EntityManager), so you are free to use it as you wish. The constructor will be called only when you instantiate the class yourself via new operator (or when using em.create() to create new entity instance), so it is a handy place to require your data when creating new entity.
📄️ Using Multiple Schemas
In MySQL and PostgreSQL it is possible to define your entities in multiple schemas. In MySQL terminology, it is called database, but from an implementation point of view, it is a schema.
📄️ Using native BigInt PKs (MySQL and PostgreSQL)
Since v6, bigints are represented by the native BigInt type, and as such, they don't require explicit type in the decorator options:
📄️ Using AsyncLocalStorage
Since v5 AsyncLocalStorage is used inside RequestContext helper so this section is no longer valid.
📄️ Creating Custom Driver
If you want to use database that is not currently supported, you can implement your own driver. To do so, you will need to design 4 classes: