1.0.1 • Published 7 years ago

fh-wfm-mongo-store v1.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

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
  });