123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- "use strict";
- /**
- * @fileOverview The **ReadPreference** class is a class that represents a MongoDB ReadPreference and is
- * used to construct connections.
- *
- * @example
- * var Db = require('mongodb').Db,
- * ReplSet = require('mongodb').ReplSet,
- * Server = require('mongodb').Server,
- * ReadPreference = require('mongodb').ReadPreference,
- * test = require('assert');
- * // Connect using ReplSet
- * var server = new Server('localhost', 27017);
- * var db = new Db('test', new ReplSet([server]));
- * db.open(function(err, db) {
- * test.equal(null, err);
- * // Perform a read
- * var cursor = db.collection('t').find({});
- * cursor.setReadPreference(ReadPreference.PRIMARY);
- * cursor.toArray(function(err, docs) {
- * test.equal(null, err);
- * db.close();
- * });
- * });
- */
- /**
- * Creates a new ReadPreference instance
- *
- * Read Preferences
- * - **ReadPreference.PRIMARY**, Read from primary only. All operations produce an error (throw an exception where applicable) if primary is unavailable. Cannot be combined with tags (This is the default.).
- * - **ReadPreference.PRIMARY_PREFERRED**, Read from primary if available, otherwise a secondary.
- * - **ReadPreference.SECONDARY**, Read from secondary if available, otherwise error.
- * - **ReadPreference.SECONDARY_PREFERRED**, Read from a secondary if available, otherwise read from the primary.
- * - **ReadPreference.NEAREST**, All modes read from among the nearest candidates, but unlike other modes, NEAREST will include both the primary and all secondaries in the random selection.
- *
- * @class
- * @param {string} mode The ReadPreference mode as listed above.
- * @param {object} tags An object representing read preference tags.
- * @property {string} mode The ReadPreference mode.
- * @property {object} tags The ReadPreference tags.
- * @return {ReadPreference} a ReadPreference instance.
- */
- var ReadPreference = function(mode, tags) {
- if(!(this instanceof ReadPreference))
- return new ReadPreference(mode, tags);
- this._type = 'ReadPreference';
- this.mode = mode;
- this.tags = tags;
- }
- /**
- * Validate if a mode is legal
- *
- * @method
- * @param {string} mode The string representing the read preference mode.
- * @return {boolean}
- */
- ReadPreference.isValid = function(_mode) {
- return (_mode == ReadPreference.PRIMARY || _mode == ReadPreference.PRIMARY_PREFERRED
- || _mode == ReadPreference.SECONDARY || _mode == ReadPreference.SECONDARY_PREFERRED
- || _mode == ReadPreference.NEAREST
- || _mode == true || _mode == false || _mode == null);
- }
- /**
- * Validate if a mode is legal
- *
- * @method
- * @param {string} mode The string representing the read preference mode.
- * @return {boolean}
- */
- ReadPreference.prototype.isValid = function(mode) {
- var _mode = typeof mode == 'string' ? mode : this.mode;
- return ReadPreference.isValid(_mode);
- }
- /**
- * @ignore
- */
- ReadPreference.prototype.toObject = function() {
- var object = {mode:this.mode};
- if(this.tags != null) {
- object['tags'] = this.tags;
- }
- return object;
- }
- /**
- * @ignore
- */
- ReadPreference.PRIMARY = 'primary';
- ReadPreference.PRIMARY_PREFERRED = 'primaryPreferred';
- ReadPreference.SECONDARY = 'secondary';
- ReadPreference.SECONDARY_PREFERRED = 'secondaryPreferred';
- ReadPreference.NEAREST = 'nearest'
- /**
- * @ignore
- */
- module.exports = ReadPreference;
|