diff --git a/src/index.js b/src/index.js index fd826dd8..b80cb713 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,5 @@ #!/usr/bin/env node 'use strict' - require('dotenv').config() const mongoose = require('mongoose') @@ -8,6 +7,7 @@ const mongoose = require('mongoose') const server = require('./server') const signale = require('./utils/signale') const isDemo = require('./utils/isDemo') +const isSrvUrl = require('./utils/isSrvUrl') const fillDatabase = require('./utils/fillDatabase') const stripUrlAuth = require('./utils/stripUrlAuth') @@ -27,14 +27,18 @@ if (dbUrl == null) { signale.await(`Connecting to ${ stripUrlAuth(dbUrl) }`) -mongoose.connect(dbUrl, { - +const mongooseConfig = { useNewUrlParser: true, useCreateIndex: true, reconnectTries: Number.MAX_VALUE, - reconnectInterval: 1000 + reconnectInterval: 1000, +} + +if (isSrvUrl(dbUrl)) { + mongooseConfig.useUnifiedTopology = true +}; -}).then(() => { +mongoose.connect(dbUrl, mongooseConfig).then(() => { signale.success(`Connected to ${ stripUrlAuth(dbUrl) }`) signale.start(`Starting the server`) diff --git a/src/utils/isSrvUrl.js b/src/utils/isSrvUrl.js new file mode 100644 index 00000000..f1892377 --- /dev/null +++ b/src/utils/isSrvUrl.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = (url) => { + return url.split(":")[0].includes("srv"); +}; diff --git a/test/utils/isSrvUrl.js b/test/utils/isSrvUrl.js new file mode 100644 index 00000000..a53d766a --- /dev/null +++ b/test/utils/isSrvUrl.js @@ -0,0 +1,16 @@ +"use strict"; + +const test = require("ava"); + +const isSrvUrl = require("../../src/utils/isSrvUrl"); +const standarConnectionString = "mongodb://localhost:27017/ackee"; +const srvConnectionString = + "mongodb+srv://username:badpw@cluster0-OMITTED.mongodb.net/ackee"; + +test("return standard connection string is false", async (t) => { + t.is(isSrvUrl(standarConnectionString), false); +}); + +test("return srv connection string is false", async (t) => { + t.is(isSrvUrl(srvConnectionString), true); +});