Как исправить «Ошибка: querySrv EREFUSED» при подключении к MongoDB Atlas? - PullRequest
0 голосов
/ 03 апреля 2019

Я новичок в MongoDB 4.0.6 и пытался внедрить его на свой сайт с помощью Node / Express.js, но когда я пытаюсь подключиться к mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main, я получаю эту ошибку:

{Ошибка: querySrv EREFUSED _mongodb._tcp.main-03xkr.mongodb.net в QueryReqWrap.onresolve [как oncomplete] (dns.js: 199: 19) errno: 'EREFUSED', код: «EREFUSED», системный вызов: 'querySrv', имя хоста: '_mongodb._tcp.main-03xkr.mongodb.net'}

Я пытался подключиться к mongodb://localhost:27017/main, но это действительно , кажется, работает.

Вот соответствующий код:

require('dotenv').config();
const mongoose = require('mongoose');

// Database
const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;
const localURI = 'mongodb://localhost:27017/main';

var Project = require('./models/project');

mongoose.connect(uri, { useNewUrlParser: true });
const db = mongoose.connection;

db.once('open', () => console.log('Successfully connected to MongoDB'));
db.on('error', (e) => console.log(e));

// Routes
app.get('/', (req, res) => {
  Project.find({}, (e, projects) => {
    if (e) console.log(e);

    res.render('home.ejs', {
      projects: projects
    });
  });
});

Так кто-нибудь знает, как исправить эту ошибку и, возможно, объяснить, что здесь происходит?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Если вы столкнулись с этой ошибкой, попробуйте использовать более старую строку подключения для Node.js 2.2.12 или новее:

MongoDB: //: @ main-shard-00-00-03xkr.mongodb.net: 27017, main-shard-00-01-03xkr.mongodb.net: 27017, главной осколок-00-02-03xkr .mongodb.net: 27017 / главная = SSL верно и replicaSet = Main-осколок-0 & = админы авторизация источника и retryWrites = истина

Согласно MongoDB, SRV, возможно, не работает из-за Mongoose.

0 голосов
/ 03 апреля 2019

У вас есть undefined в строке подключения.Я не знаю, является ли это опечаткой или нет.Но попробуйте изменить

const uri = `mongodb+srv://undefined:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;

на

const uri = `mongodb+srv://${process.env.MONGOUSER}:${process.env.MONGOPASS}@main-03xkr.mongodb.net/main`;

Я использую MongoAtlas для проекта, и эта строка (за исключением неопределенного пользователя) выглядит правильно.

...