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! :)