@ifit/mongoose-dao
v3.1.1
Published
Mongo helper methods for working with data in a DAO or repository pattern
Downloads
55
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
createdAt
andupdatedAt
field - That
_id
is auto converted toid
whentoObject()
is called - That
__v
is 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 theout
dirwatch
- Builds and watches for changes, on changes buildslint
- Runs TypeScript lintingtest
- Runs all the test marked with.test.ts
test-cov
- Runs code coverage, generates an HTML report, and opens it in the browserprepare
- Installs local peer dependencies