UNPKG

modella-mongo

Version:

Modella Mongo persistence layer

36 lines (30 loc) 966 B
var mquery = require('mquery'); module.exports = function(Model, collection) { Model.query = function() { return buildQueryWrapper(Model, collection); }; }; function buildQueryWrapper(Model, collection) { var queryWrapper = new mquery(collection); var wrappedMethods = ['find', 'findOne', 'update', 'findOneAndUpdate', 'findOneAndRemove', 'distinct']; wrappedMethods.forEach(function(method) { var oldMethod = queryWrapper[method]; queryWrapper[method] = function() { var args = Array.prototype.slice.call(arguments), cb = args[args.length - 1]; if(typeof cb == 'function') { args[args.length - 1] = function(err, doc) { if(err) cb(err, null); else if(!doc) cb(err, doc); else { var instances = new Model(doc); cb(null, instances); } }; } return oldMethod.apply(queryWrapper, args); }; }); return queryWrapper; }