A concrete implementation of js-entity-repos for mongo.
- Install it with 
npm i @js-entity-repos/mongo. - For each entity you will need to do the following.
 
import Entity from '@js-entity-repos/core/dist/types/Entity';
export interface TodoEntity extends Entity {
  readonly description: string;
  readonly completed: boolean;
}import factory from '@js-entity-repos/mongo/dist/factory';
import connectToDb from '@js-entity-repos/mongo/dist/utils/connectToDb';
import parseFilterId from '@js-entity-repos/mongo/dist/utils/parseFilterId';
import renameSortId from '@js-entity-repos/mongo/dist/utils/renameSortId';
const todosFacade = factory<TodoEntity>({
  // Optional property. Defaults to entityName.
  collectionName: 'todos',
  // Optional property to convert an entity to a DB document. Defaults to "utils/constructIdDocument".
  constructDocument: ({ id, ...patch}) => {
    return { _id: id, ...patch };
  },
  // Optional property to convert a DB document to an entity. Defaults to "utils/constructIdEntity".
  constructEntity: ({ _id, ...document }) => {
    return { id: _id, ...document };
  },
  // Optional property to convert an entity filter to a DB filter. Defaults to "utils/parseFilterId".
  constructFilter: (filter) => {
    return parseFilterId(filter);
  },
  // Optional property to convert an entity sort to a DB sort. Defaults to "utils/renameSortId".
  constructSort: (sort) => {
    return renameSortId(sort);
  },
  db: connectToDb({
    dbName: 'todoapp',
    url: 'mongodb://localhost:27017',
  }),
  // Optional property. Defaults to 10.
  defaultPaginationLimit: 10,
  entityName: 'todo',
});