@ifit/mongoose-dao

Mongo helper methods for working with data in a DAO or repository pattern

Stats

StarsIssuesVersionUpdatedCreatedSize
@ifit/mongoose-dao
2.2.0a year ago3 years agoMinified + gzip package size for @ifit/mongoose-dao in KB

Readme

Build Status codecov

Purpose

Mongo helper methods for working with data in a DAO or repository pattern. As well as some required misc helper methods for interacting with mongo.

DAO/Repository Pattern

The primary purpose of this is to abstract the interaction with the Database. This has the following benefits:

  • Easier to mock and DI throughout the app
  • Doesn't depend so heavily throughout the app on setting up Mockgoose
  • Wraps all response objects in a proper class
  • Avoids the messy nature of Mongoose statics/methods

Helpers

The pattern requires the following on Mongo objects:

  • There is a createdAt and updatedAt field
  • That _id is auto converted to id when toObject() is called
  • That __v is removed when toObject() is called

To do that, there is a helper method that sets those up. Simply call initMongoCleanAndTimestamp() in the models of the app.

Examples

See the sample folder. The file/folder structure and files should be all that you need to get started.

Contributing

See CONTRIBUTING.md

Installing dependencies for the project locally

  • yarn install - Installs all the dependencies
  • yarn prepare - Installs in the peer dependencies for local development

Scripts

  • clean - Cleans the project build directories
  • build - Cleans and compiles the code to the out dir
  • watch - Builds and watches for changes, on changes builds
  • lint - Runs TypeScript linting
  • test - Runs all the test marked with .test.ts
  • coverage - Runs code coverage, generates an HTML report, and opens it in the browser
  • prepare - Installs local peer dependencies

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.