UNPKG

jaydata-librets

Version:
77 lines (63 loc) 2.25 kB
var Readable = require('stream').Readable , utils = require('./utils') , inherits = require('util').inherits; var Scope = function(collection, _selector, _fields, _scope_options) { var self = this; // Ensure we have at least an empty cursor options object _scope_options = _scope_options || {}; var _write_concern = _scope_options.write_concern || null; // Ensure default read preference if(!_scope_options.readPreference) _scope_options.readPreference = {readPreference: 'primary'}; // Write branch options var writeOptions = { insert: function(documents, callback) { // Merge together options var options = _write_concern || {}; // Execute insert collection.insert(documents, options, callback); }, save: function(document, callback) { // Merge together options var save_options = _write_concern || {}; // Execute save collection.save(document, save_options, function(err, result) { if(typeof result == 'number' && result == 1) { return callback(null, document); } return callback(null, document); }); }, find: function(selector) { _selector = selector; return writeOptions; }, // // Update is implicit multiple document update update: function(operations, callback) { // Merge together options var update_options = _write_concern || {}; // Set up options, multi is default operation update_options.multi = _scope_options.multi ? _scope_options.multi : true; if(_scope_options.upsert) update_options.upsert = _scope_options.upsert; // Execute options collection.update(_selector, operations, update_options, function(err, result, obj) { callback(err, obj); }); }, } // Set write concern this.withWriteConcern = function(write_concern) { // Save the current write concern to the Scope _scope_options.write_concern = write_concern; _write_concern = write_concern; // Only allow legal options return writeOptions; } // Start find this.find = function(selector, options) { // Save the current selector _selector = selector; return null; } } exports.Scope = Scope;