'use strict'; /** * methods a collection must implement */ var methods = [ 'find' , 'findOne' , 'update' , 'updateMany', , 'updateOne' , 'replaceOne' , 'remove' , 'count' , 'distinct' , 'findAndModify' , 'aggregate' , 'findStream' , 'deleteOne' , 'deleteMany' ]; /** * Collection base class from which implementations inherit */ function Collection () {} for (var i = 0, len = methods.length; i < len; ++i) { var method = methods[i]; Collection.prototype[method] = notImplemented(method); } module.exports = exports = Collection; Collection.methods = methods; /** * creates a function which throws an implementation error */ function notImplemented (method) { return function () { throw new Error('collection.' + method + ' not implemented'); } }