@ifit/mongoose-dao
TypeScript icon, indicating that this package has built-in type declarations

3.1.1 • Public • Published

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.

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 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.

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 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
  • test-cov - Runs code coverage, generates an HTML report, and opens it in the browser
  • prepare - Installs local peer dependencies

Readme

Keywords

none

Package Sidebar

Install

npm i @ifit/mongoose-dao

Weekly Downloads

9

Version

3.1.1

License

ISC

Unpacked Size

72.5 kB

Total Files

54

Last publish

Collaborators

  • eduard_tatarenko
  • pavlo2012
  • arml
  • jaredap1995
  • oleksandr1337
  • vladpanchuk
  • talleman-ifit
  • bikersteveifit
  • yevhen.mikitin
  • damiengallagher
  • elainedev
  • abderrahim_hellaci
  • bkifit
  • bryan.may
  • faheem.bhuj
  • caleb.berman
  • andrii.pruchai
  • davidrodriguez085
  • williamt-ifit
  • devon-conn
  • mikelundinifit
  • bao.luong
  • taha-khan-abdalli
  • igor_novikov
  • zhongwei1208
  • ifit.perassi
  • haseebifit
  • tomwileyifit
  • tanzeel.rehman.19901223
  • niall-mahford
  • lamini
  • jamesmerrill
  • jkingifit
  • shashank_ifit
  • mahjongg
  • peter.ifit.com
  • jandersen
  • junchaoz
  • aaronl
  • cbrammer
  • michelle.bowser
  • robertleeplummerjr
  • mojojoejoe
  • ifitshared
  • rkaneda9
  • joekuhn
  • mark-archer
  • tdfacer
  • joshifit
  • yodafred
  • jonb-ifit
  • sm-npm
  • weaster-ifit
  • wesleyf
  • donj
  • phild
  • dawsontoth
  • michaelh-ifit
  • matthewpthomas
  • 32graham
  • jcalmonte
  • jeffy-ifit
  • xbladex
  • timtifit
  • melissawirtz
  • khaifit
  • jackswan
  • mcurcio
  • scottstav
  • emiifont
  • brandonifit
  • ericventor
  • talleman