You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					152 lines
				
				3.3 KiB
			
		
		
			
		
	
	
					152 lines
				
				3.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Module dependencies
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Collection = require('./collection');
							 | 
						||
| 
								 | 
							
								var utils = require('../utils');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function NodeCollection(col) {
							 | 
						||
| 
								 | 
							
								  this.collection = col;
							 | 
						||
| 
								 | 
							
								  this.collectionName = col.collectionName;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * inherit from collection base class
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								utils.inherits(NodeCollection, Collection);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * find(match, options, function(err, docs))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.find = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.find(match, options, function(err, cursor) {
							 | 
						||
| 
								 | 
							
								    if (err) return cb(err);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								      cursor.toArray(cb);
							 | 
						||
| 
								 | 
							
								    } catch (error) {
							 | 
						||
| 
								 | 
							
								      cb(error);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * findOne(match, options, function(err, doc))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.findOne = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.findOne(match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * count(match, options, function(err, count))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.count = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.count(match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * distinct(prop, match, options, function(err, count))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.distinct = function(prop, match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.distinct(prop, match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * update(match, update, options, function(err[, result]))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.update = function(match, update, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.update(match, update, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * update(match, update, options, function(err[, result]))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.updateMany = function(match, update, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.updateMany(match, update, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * update(match, update, options, function(err[, result]))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.updateOne = function(match, update, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.updateOne(match, update, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * replaceOne(match, update, options, function(err[, result]))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.replaceOne = function(match, update, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.replaceOne(match, update, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * deleteOne(match, options, function(err[, result])
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.deleteOne = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.deleteOne(match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * deleteMany(match, options, function(err[, result])
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.deleteMany = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.deleteMany(match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * remove(match, options, function(err[, result])
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.remove = function(match, options, cb) {
							 | 
						||
| 
								 | 
							
								  this.collection.remove(match, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * findAndModify(match, update, options, function(err, doc))
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.findAndModify = function(match, update, options, cb) {
							 | 
						||
| 
								 | 
							
								  var sort = Array.isArray(options.sort) ? options.sort : [];
							 | 
						||
| 
								 | 
							
								  this.collection.findAndModify(match, sort, update, options, cb);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * var stream = findStream(match, findOptions, streamOptions)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.findStream = function(match, findOptions, streamOptions) {
							 | 
						||
| 
								 | 
							
								  return this.collection.find(match, findOptions).stream(streamOptions);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * var cursor = findCursor(match, findOptions)
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NodeCollection.prototype.findCursor = function(match, findOptions) {
							 | 
						||
| 
								 | 
							
								  return this.collection.find(match, findOptions);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * aggregation(operators..., function(err, doc))
							 | 
						||
| 
								 | 
							
								 * TODO
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Expose
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = exports = NodeCollection;
							 |