undeexcepturi
Version:
TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.
39 lines (31 loc) • 1.3 kB
text/typescript
import { MikroORM } from '@mikro-orm/better-sqlite';
import { Filter, FilterValue, Project, Risk } from './entities';
import { DatabaseSeeder } from './seeder';
let orm: MikroORM;
beforeAll(async () => {
orm = await MikroORM.init({
entities: [Project, Risk, Filter, FilterValue],
dbName: ':memory:',
});
await orm.schema.createSchema();
const seeder = new DatabaseSeeder();
await seeder.run(orm.em);
orm.em.clear();
});
afterAll(() => orm.close(true));
test('perf: serialize nested entities', async () => {
const risks = await orm.em.find(Risk, {}, { populate: ['*'] });
const project = await orm.em.findOneOrFail(Project, { id: 1 });
// Serialize a collection of 150 entities
console.time('perf: serialize risks');
const stringRisks1 = JSON.stringify(risks);
console.timeEnd('perf: serialize risks');
// Serialize an entity with the same collection of 150 entities as above
// Next extract the 150 entities, giving the same result as stringRisks above
console.time('perf: serialize project');
const stringProject = JSON.stringify(project);
const stringRisks2 = JSON.stringify(JSON.parse(stringProject).risks);
console.timeEnd('perf: serialize project');
// See that the stringified results are the same
expect(stringRisks1).toBe(stringRisks2);
});