Невозможно подключиться к Mongodb Atlas с помощью mongoose - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь подключиться к кластеру, созданному в Mongodb Atlas, используя mon goose в node js, и при этом у меня возникают следующие проблемы.

  1. Когда я использую Строка подключения, которая указана в Mon go db атлас mongodb+srv://lm_dev_app:<password>@lmdev-q5biw.mongodb.net/test?retryWrites=true&w=majority Я получаю ниже ошибка

    {Ошибка: queryTxt EBADNAME lmdev-q5biw.mongodb.net на QueryReqWrap.onresolve [как oncomplete] (днс. js: 196: 19) errno: 'EBADNAME', код: 'EBADNAME', системный вызов: 'queryTxt', имя хоста: 'lmdev-q5biw.mongodb. net'}

Я не могу использовать эту строку подключения в Mongodb Compass, так как там я получаю ту же ошибку.

Если я пытаюсь подключиться, используя mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net/test, я получаю ошибку ниже

MongooseServerSelectionError: соединение с 54.66.221.230:27017 закрыто

Однако я возможность подключения к каждому узлу с помощью Mongodb Compass, что исключает возможность того, что мой ipaddress не входит в белый список.

Вот пример кода, который я использую

const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net/test", {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    replicaSet: "LMDEV"
}, (err) => {
    if (err) {
        console.log(err);
    } else {
        console.log("Successful");
    }
});

Любые мысли о том, что происходит здесь.

1 Ответ

0 голосов
/ 12 апреля 2020

Здесь необходимо выделить несколько вещей.

  1. Строка подключения по умолчанию, показанная в Mongodb Atlas, кажется неправильной. Это показывает вам mongodb+srv://lm_dev_app:<password>@lmdev-q5biw.mongodb.net/test?retryWrites=true&w=majority. Но я использовал mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/, чтобы заставить его работать. Вы также можете использовать mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/admin

  2. Pass ssl:true в опциях, которые мы передаем.

  3. Наконец, один из 3 вариантов может использоваться для подключения к базе данных.

    a. const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/", { useNewUrlParser: true, useUnifiedTopology: true, authSource:"admin", ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });

    б. const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/", { useNewUrlParser: true, useUnifiedTopology: true, authSource:"admin", ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });

    c. const mongoosePromise = mongoose.connect("mongodb://lm_dev_app:<password>@lmdev-shard-00-01-q5biw.mongodb.net:27017/admin", { useNewUrlParser: true, useUnifiedTopology: true, ssl: true, }, (err) => { if (err) { console.log(err); } else { console.log("Successful"); } });

...