A Mise Model extension for interfacing with mongodb
First, create your models using mise. You can pass any Model to the constructor returned from this module, and it will add convenience methods for interfacing with mongodb.
For more information on how to use Models with mise, see the mise docs and/or the mise Model docs.
To extend a mise model, first create your model, and in your extension model, require this library. You can add other convenience methods you want, and then use this extended model in your application code.
This extension takes only one additional argument, which is an options hash passed directly to mongo-wrapper.
var MyModel = require('../lib/models/MyModel.js');
var extend = require('mise-model-mongo');
var ExtendedModel = extend(MyModel,{
idKey : 'customIDKey',
username: 'admin_user',
password: 'secret',
hosts: [
{name: 'primary-1.db.com', port: 27017},
{name: 'secondary-1.db.com', port: 27017},
{name: 'secondary-2.db.com', port: 27017}
],
database: 'db_1',
options: {
replicaSet: 'replicaset_1',
readPreference: 'primaryPreferred'
},
indexes: {
users: [
{index: 'email', options: {unique: true}}
]
}
});
ExtendedModel.prototype.convenienceMethod = function(){
var data = this.toObject();
// do something with data.
};
module.exports = ExtendedModel;
This extension has the following configuration options:
-
All options that can be passed to mongo-wrapper.
-
An
idKey
option, that will override the standard_id
field as the field that consumers of this module will use to identify these objects. Note that this will not change the.one
method's default query behavior or index this field.
This extension adds the following methods:
-
Model.all(callback)
This class method will query the mongodb collection for all of it's entries. The collection is the plural name of the Model, set during original instantiation.
The callback has the signature
(err,array)
, where array is an array of models of this type. -
Model.one(id,callback)
When passed a non-object, this class method will query the mongodb collection for an item with the
_id
ofid
.When passed an object, this class method will query the mongodb collection for an item matching the query. For instance,
{username : 'someuser'}
.The callback has the signature
(err,model)
, where model is a model of this type with that_id
or the first object matching the passed query. -
Model.prototype.save(callback)
This instance method will do one of 2 following things, depending on the presence of an id on this model.
If this instance has an
_id
, it will perform afindAndModify
query with the data set on this model.If this does not have an
_id
, it will perform aninsert
into this model's collection.The callback has the signature
(err,model)
, where model is a model of this type (either the updated or created model). -
Model.destroy(id,callback)
This class method will perform a
remove
query on this collection for an item with the specified id.The callback has the signature
(err,count)
, where count is the number of removed documents. (Either 1 or 0 in the case of a failure or non-matched_id
.). -
Model.prototype.destroy(callback)
This instance method is an alias for the above class method, which will automatically use this instance's
_id
.