Skip to content

Commit a1ce65a

Browse files
author
Jessica Lord
committed
refactor(url parser): collect connection string options
1 parent 60b08e3 commit a1ce65a

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

lib/url_parser.js

+18-10
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,18 @@ module.exports = function(url, options, callback) {
5252
});
5353

5454
let connectionString = connectionStrings.join(',') + '/';
55-
56-
if (!options.ssl && !result.search.match('ssl')) {
57-
// Default to SSL true
58-
connectionString += '?ssl=true';
59-
} else if (!result.search) connectionString += '?'
55+
let connectionStringOptions = [];
56+
57+
// Default to SSL true
58+
if (!options.ssl && !result.search) {
59+
connectionStringOptions.push('ssl=true');
60+
} else if (!options.ssl && result.search && !result.search.match('ssl')) {
61+
connectionStringOptions.push('ssl=true');
62+
}
63+
6064
// Keep original uri options
61-
if (result.search && !result.search.match('ssl')) {
62-
connectionString += result.search.replace('?', '&');
63-
} else if (result.search && result.search.match('ssl')) {
64-
connectionString += result.search;
65+
if (result.search) {
66+
connectionStringOptions.push(result.search.replace('?', ''));
6567
}
6668

6769
dns.resolveTxt(result.host, function(err, record) {
@@ -81,8 +83,14 @@ module.exports = function(url, options, callback) {
8183
return callback(new Error('text record must only set `authSource` or `replicaSet`'));
8284
}
8385

84-
connectionString += '&' + record;
86+
connectionStringOptions.push(record);
8587
}
88+
89+
// Add any options to the connection string
90+
if (connectionStringOptions.length) {
91+
connectionString += `?${connectionStringOptions.join('&')}`;
92+
}
93+
8694
parseHandler(connectionString, options, callback);
8795
});
8896
});

0 commit comments

Comments
 (0)