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.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.9 KiB
						
					
					
				/*!
 | 
						|
 * Module dependencies.
 | 
						|
 */
 | 
						|
 | 
						|
'use strict';
 | 
						|
 | 
						|
const MongooseError = require('./mongooseError');
 | 
						|
const allServersUnknown = require('../helpers/topology/allServersUnknown');
 | 
						|
const isAtlas = require('../helpers/topology/isAtlas');
 | 
						|
const isSSLError = require('../helpers/topology/isSSLError');
 | 
						|
 | 
						|
/*!
 | 
						|
 * ignore
 | 
						|
 */
 | 
						|
 | 
						|
const atlasMessage = 'Could not connect to any servers in your MongoDB Atlas cluster. ' +
 | 
						|
  'One common reason is that you\'re trying to access the database from ' +
 | 
						|
  'an IP that isn\'t whitelisted. Make sure your current IP address is on your Atlas ' +
 | 
						|
  'cluster\'s IP whitelist: https://docs.atlas.mongodb.com/security-whitelist/';
 | 
						|
 | 
						|
const sslMessage = 'Mongoose is connecting with SSL enabled, but the server is ' +
 | 
						|
  'not accepting SSL connections. Please ensure that the MongoDB server you are ' +
 | 
						|
  'connecting to is configured to accept SSL connections. Learn more: ' +
 | 
						|
  'https://mongoosejs.com/docs/tutorials/ssl.html';
 | 
						|
 | 
						|
class MongooseServerSelectionError extends MongooseError {
 | 
						|
  /**
 | 
						|
   * MongooseServerSelectionError constructor
 | 
						|
   *
 | 
						|
   * @api private
 | 
						|
   */
 | 
						|
  assimilateError(err) {
 | 
						|
    const reason = err.reason;
 | 
						|
    // Special message for a case that is likely due to IP whitelisting issues.
 | 
						|
    const isAtlasWhitelistError = isAtlas(reason) &&
 | 
						|
      allServersUnknown(reason) &&
 | 
						|
      err.message.indexOf('bad auth') === -1 &&
 | 
						|
      err.message.indexOf('Authentication failed') === -1;
 | 
						|
 | 
						|
    if (isAtlasWhitelistError) {
 | 
						|
      this.message = atlasMessage;
 | 
						|
    } else if (isSSLError(reason)) {
 | 
						|
      this.message = sslMessage;
 | 
						|
    } else {
 | 
						|
      this.message = err.message;
 | 
						|
    }
 | 
						|
    for (const key in err) {
 | 
						|
      if (key !== 'name') {
 | 
						|
        this[key] = err[key];
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return this;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
Object.defineProperty(MongooseServerSelectionError.prototype, 'name', {
 | 
						|
  value: 'MongooseServerSelectionError'
 | 
						|
});
 | 
						|
 | 
						|
module.exports = MongooseServerSelectionError;
 |