fh-wfm-mongo-store
v1.0.1
Published
Direct mongo storage
Downloads
19
Maintainers
Readme
raincatcher-mongo-store
Mongodb storage implementation
Run tests
Ensure Mongo is running on your machine, type the following command
npm test
Models
Mongoose models can be found in models
directory. To add a new model use the same naming convention for desired dataset. ie. workorders
model for workorders
dataset / collection. Then require the directory and access the model using the name applied.
Note: Each schema require autogenerated timestamp
that are used by other modules like raincatcher-sync to determine if object was changed. When creating new schema please make sure to add {timestamps: true}
as schema option.
API
connect
To connect to mongo
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var customSchemas = {
//The key is the same as the datasetId (e.g. workorders)
workorders: function(mongooseConnection) {
var customWorkorderSchema = new Schema({
...
name: {type: String}
...
}, {timestamps: true});
mongooseConnection.model('CustomWorkorderModel', customWorkorderSchema);
}
...
//Any other custom schemas
...
};
Connector.connect('mongodb://mongoUriGoseHere:27017/db', {}, customSchemas)
.then(function() {
// connected successfully
}, function(error) {
// An error occurred when connecting
});
getDAL
Get the Data access layer object for a collection/dataset.
var datasetId = "workorders";
Connector.getDAL(datasetId).
then(function(_dal) {
// do stuff with dataset dal
}, function(error) {
// handle error
});
listen
The Data Access Layer object for a collection has a listen
function that ensures that the CRUDL topics for the data set are subscribed.
/**
* This function has access to the mongoose Model associated with the data set
* through the "model" property
*
* @returns {Promise}
*/
function customListFunction() {
return this.model.list();
}
var datasetId = "workorders";
Connector.getDAL(datasetId).
then(function(_dal) {
//This function will subscribe to the CRUDL topics for "workorders"
//The "list" topic will execute the "customListFunction"
//Note: This function will only overrdie the "list" topic for a single data set.
_dal.listen(":data", mediator, {
list: customListFunction
});
}, function(error) {
// handle error
});
The following functions are overridable:
- create
- update
- list
- remove
- read
disconnect
Connector.disconnect()
.then(function() {
// disconnected
}, function(error) {
// something went wrong
});