btrz-mongo-service

What

This is a Service to access Mongo in a way that is useful for Betterez Node APIs.

This is a wrapper around btrz-simple-dao, providing some extra features like Mongo ID validation, Betterez Node API compatible error throwing with ValidationError, etc.

Why

Several Node APIs were using a mongo-data-service for each Model (btrz-inventory-api for example).

This was causing many duplicated methods between data-services and also many wrappers not needed, like delete just calling simpleDao.for(Model).removeById.

The solution is to have this single mongo data-access service, that implements several methods in a Model-independent way, and removes some unnecessary wrapping.

Many APIs were checking for valid Mongo IDs in every handler, via SimpleDao or via JOI. Also many were re-implementing validation for "existing" models not found.

This Service provides Mongo ID validation and "existing" checks, integrated in the right methods.

How to use

const {MongoDataService} = require("btrz-mongo-service");
const mongoDataService = new MongoDataService(dao, config);

Both dao and config are mandatory. Config is needed for pageSize configuration in pagination (getCountedList).

The Model is just a method parameter (always the first one).

Available methods

Each available method is documented with JSDoc in mongo-data-service.js.

You might notice that some methods (getCount, save, delete) that are available in btrz-api-inventory data-services are not implemented here. The reason is they were just a SimpleDao call, there was nothing extra.

If you need to get a list, count, save, delete, just use btrz-simple-dao! :)