A Node.js collection model for mongoose stuff
TL;DR
Installation
npm install node-simple-collectionmodel --save
Usage Express Style
Add schemas for all collections you want to use.
Create a Mongoose init file MongooseHelper
:
const { CollectionModel } = require('node-simple-collectionmodel');
const loginUserSchema = require('./loginUserSchema');
const sequenceSchema = require('./sequenceSchema');
CollectionModel.addSchemas({
loginUser: loginUserSchema,
sequence: sequenceSchema,
});
module.exports = CollectionModel;
Then extend your collection classes.
const { CollectionModel } = require('node-simple-collectionmodel');
class LoginUser extends CollectionModel {
constructor(config) {
super('loginUser', config);
this.searchFields = ['email'];
this.searchFieldsNum = ['id'];
this.defaultSort = { email: -1 };
}
}
module.exports = LoginUser;
Connection to the database globally inside server startup.
const CollectionModel = require('./MongooseHelper');
CollectionModel.connectGlobal({
config: {
mongo: {
url: 'mongodb://localhost:27017/mySuperDB?safe=true&auto_reconnect=true&poolSize=20'
}
}
});
Usage of collection class.
const email = 'sorenso@gmail.com';
const loginUser = new LoginUser();
myUser = await loginUser.findOne({ email });
console.log(myUser);
Helper modules in use:
Jest A browser JavaScript testing toolkit. Jest is used by Facebook to test all JavaScript code including React applications. One of Jest's philosophies is to provide an integrated "zero-configuration" experience.
ESLint ESLint is a code style linter for programmatically enforcing your style guide.
Travis
Travis CI is a hosted continuous integration service. It is integrated with GitHub and offers first class support for many languages.
Coveralls.io
Coveralls is a web service to help you track your code coverage over time, and ensure that all your new code is fully covered.
Retire
Scanner detecting the use of JavaScript libraries with known vulnerabilities.
Howto to get started with contributions
$ git clone git@github.com:5orenso/node-simple-collectionmodel.git
$ cd node-simple-collectionmodel/
$ npm install
Start developing. Remember to start watching your files:
$ npm run test:watch
HOWTO fix eslint issues
$ eslint --fix lib/utilities.js
Howto contribute
$ git clone git@github.com:5orenso/node-simple-collectionmodel.git
Do your magic and create a pull request.
Howto report issues
Use the Issue tracker
Howto update CHANGELOG.md
$ bash ./changelog.sh
Howto update NPM module
- Bump version inside
package.json
- Push all changes to Github.
- Push all changes to npmjs.com:
$ bash ./npm-release.sh
.
Howto check for vulnerabilities in modules
$ npm install nsp --global
$ nsp check
Howto upgrade modules
$ sudo npm install -g npm-check-updates
$ ncu -u -a
$ npm install --no-optional
Versioning
For transparency and insight into the release cycle, releases will be
numbered with the follow format:
<major>.<minor>.<patch>
And constructed with the following guidelines:
- Breaking backwards compatibility bumps the major
- New additions without breaking backwards compatibility bumps the minor
- Bug fixes and misc changes bump the patch
For more information on semantic versioning, please visit http://semver.org/.
Contributions and feedback:
We ❤️ contributions and feedback.
If you want to contribute, please check out the CONTRIBUTING.md file.
If you have any question or suggestion create an issue.
Bug reports should always be done with a new issue.
Other Resources
More about the author