Server IP : 92.205.26.207 / Your IP : 216.73.216.16 Web Server : Apache System : Linux 207.26.205.92.host.secureserver.net 4.18.0-553.60.1.el8_10.x86_64 #1 SMP Thu Jul 10 04:01:16 EDT 2025 x86_64 User : zikryat ( 1002) PHP Version : 8.3.23 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/zikryat/public_html/node_modules/mongoose/lib/helpers/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
'use strict'; const clone = require('./clone'); const MongooseError = require('../error/index'); function processConnectionOptions(uri, options) { const opts = options ? options : {}; const readPreference = opts.readPreference ? opts.readPreference : getUriReadPreference(uri); const clonedOpts = clone(opts); const resolvedOpts = (readPreference && readPreference !== 'primary' && readPreference !== 'primaryPreferred') ? resolveOptsConflicts(readPreference, clonedOpts) : clonedOpts; return resolvedOpts; } function resolveOptsConflicts(pref, opts) { // don't silently override user-provided indexing options if (setsIndexOptions(opts) && setsSecondaryRead(pref)) { throwReadPreferenceError(); } // if user has not explicitly set any auto-indexing options, // we can silently default them all to false else { return defaultIndexOptsToFalse(opts); } } function setsIndexOptions(opts) { const configIdx = opts.config && opts.config.autoIndex; const { autoCreate, autoIndex } = opts; return !!(configIdx || autoCreate || autoIndex); } function setsSecondaryRead(prefString) { return !!(prefString === 'secondary' || prefString === 'secondaryPreferred'); } function getUriReadPreference(connectionString) { const exp = /(?:&|\?)readPreference=(\w+)(?:&|$)/; const match = exp.exec(connectionString); return match ? match[1] : null; } function defaultIndexOptsToFalse(opts) { opts.config = { autoIndex: false }; opts.autoCreate = false; opts.autoIndex = false; return opts; } function throwReadPreferenceError() { throw new MongooseError( 'MongoDB prohibits index creation on connections that read from ' + 'non-primary replicas. Connections that set "readPreference" to "secondary" or ' + '"secondaryPreferred" may not opt-in to the following connection options: ' + 'autoCreate, autoIndex' ); } module.exports = processConnectionOptions;