@ifit/mongoose-dao
v3.1.1
Published
Mongo helper methods for working with data in a DAO or repository pattern
Maintainers
Keywords
Readme
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.
Breaking changes introduced in v3.0.0
Please see changelog heading "3.0.0 - 2023-11-10" for details
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
Object
The pattern requires the following on Mongo objects:
- There is a
createdAtandupdatedAtfield - That
_idis auto converted toidwhentoObject()is called - That
__vis removed whentoObject()is called
To do that, there is a helper method that sets those up. Simply call initMongoCleanAndTimestamp() in the models of the app.
Connection
This pattern requires a connection to Mongo. To do that, there is a helper method that sets those up. Simply call connectToMongo() in your app at init time.
Testing with Jest
There are some testing methods available for jest in @ifit/mongoose-dao/test-utils/jest folder for more details:
- global-setup.ts can be used in conjunction with jest.config.js's
config.globalSetup - global-teardown.ts can be used in conjunction with jest.config.js's
config.globalTeardown - setup-after-env.ts can be used in an array in conjunction with jest.config.js's
config.setupFilesAfterEnv
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 dependenciesyarn prepare- Installs in the peer dependencies for local development
Scripts
clean- Cleans the project build directoriesbuild- Cleans and compiles the code to theoutdirwatch- Builds and watches for changes, on changes buildslint- Runs TypeScript lintingtest- Runs all the test marked with.test.tstest-cov- Runs code coverage, generates an HTML report, and opens it in the browserprepare- Installs local peer dependencies
