MikroORM
MikroORM is one of the popular ORM for Node.js. Abyss.ts provides a plugin to integrate MikroORM easily.
If you are new with MikroORM, check this out.
Install
First, install core packages.
sh
npm add @abyss.ts/mikro-orm @mikro-orm/core @mikro-orm/migrationsh
pnpm add @abyss.ts/mikro-orm @mikro-orm/core @mikro-orm/migrationsh
yarn add @abyss.ts/mikro-orm @mikro-orm/core @mikro-orm/migrationNext, install driver.
sh
npm add @mikro-orm/postgresqlsh
pnpm add @mikro-orm/postgresqlsh
yarn add @mikro-orm/postgresqlAfter that, we can import the MikroOrmConfiguration and MikroOrmMiddleware to the application.
ts
import { ExpressApplication } from '@abyss.ts/express-runner';
import { MikroOrmConfiguration, MikroOrmMiddleware } from '@abyss.ts/mikro-orm';
ExpressApplication.create()
.useBodyParser()
.usePort({
port: 4_000,
isStrict: true,
})
.useConfiguration(MikroOrmConfiguration)
.useMiddleware(MikroOrmMiddleware)
.run();MikroOrmConfiguration is for initializing MikroORM configuration and registering services to IoC. While MikroOrmMiddleware is creating context per request.
We can now inject orm to do the query.
ts
@Injectable()
export class FilterService {
constructor(
@InjectOrm()
private readonly orm: MikroORM,
@InjectEm()
private readonly em: EntityManager,
) {}
public call() {
// logic query here
}
}Repositories
MikroORM supports the repository design pattern. And Abyss.ts provides a decorator to create and inject repository per model.
ts
@Injectable()
export class FilterService {
constructor(
@InjectRepository(Product)
private readonly productRepository: EntityRepository<Product>,
) {}
public call() {
return this.productRepository.findAll();
}
}