0.1.1 • Published 8 years ago

monk-database-helper v0.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
8 years ago

Monk Database Helper

A helper for working with mongo db using monk.

This helper is designed to hide the complexity of simple CRUD operations on mongo collections. I opted to go with a schema model so the helper can track what properties need to be set with $set, and what identifier to use for an entity. (Usually _id, but there are reasons why you might want to use a different identifier)

Install

npm install monk-database-helper --save

Running locally

Get the source by cloning the repository:

$ git clone https://github.com/SamGraber/MonkDatabaseHelper

Navigate to the project folder and install the dependencies via:

$ npm install

The following script will build the typescript files and run the unit tests against them:

$ npm test

Usage

Typescript:

import { DatabaseService, ISchema } from 'monk-database-helper';

let schema: ISchema = {
	identifier: 'id',
	properties: ['prop1', 'prop2'],
};

let database = new DatabaseService<MyType>(monkDatabase.get('myCollection'), schema);

Javascript:

var DatabaseService = require('monk-database-helper').DatabaseService;

var schema = {
	identifier: 'id',
	properties: ['prop1', 'prop2'],
};

var database = new DatabaseService(monkDatabase.get('myCollection'), schema);

getList<TSearchModel>(searchModel?: TSearchModel): Promise<TDataType[]>

Make a simple find call and return the results as a promise. Search model is passed directly to the find function.

getDetail(id: any): Promise<TDataType>

Make a findOne call to get a specific entity. The helper uses the identifier field in the schema as the key for the search model.

Example:

helperInstance.schema = { identifier: 'id' };
helperInstance.getDetail(11);

// results in
findOne({ 'id': 11 })

update(model: TDataType): Promise<TDataType>

Makes an update call for the specified entity. The query is constructed the same as for a getDetail request. All properties listed in the schema will be updated with $set values in the update request.

Example:

helperInstance.schema = {
	identifier: 'id',
	properties: ['prop1', 'prop2'],
};

let model = {
	id: 11,
	prop1: 'value',
	prop2: 52,
}; 

helperInstance.update(model);

// results in
update({ 'id': 11 }, {
	'$set': { 'prop1': 'value' },
	'$set': { 'prop2': 52 },
};

create(model: TDataType): Promise<TDataType>

Makes an insert request to create a new model in the collection. The model is passed directly to the insert command.

Example:

let model = {
	id: 11,
	prop1: 'value',
	prop2: 52,
}; 

helperInstance.create(model);

// results in
insert({ 
	'prop1': 'value' },
	'prop2': 52 },
};
0.1.1

8 years ago

0.1.0

8 years ago