Mongodb не удалось подключиться к серверу ошибка - PullRequest
0 голосов
/ 13 декабря 2018

Я получаю эту ошибку о том, что мое приложение не может подключиться к Монго после того, как я запустил "nodemon index.js":

{ MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND localhost localhost:27017]
at Pool.<anonymous> (/Users/Dakota/Projects/2018-Udemy-Bootcamp/node-mongo-project/todos_api/node_modules/mongodb-core/lib/topologies/server.js:564:11)
at emitOne (events.js:116:13)
at Pool.emit (events.js:211:7)
at Connection.<anonymous> (/Users/Dakota/Projects/2018-Udemy-Bootcamp/node-mongo-project/todos_api/node_modules/mongodb-core/lib/connection/pool.js:317:12)
at Object.onceWrapper (events.js:317:30)
at emitTwo (events.js:126:13)
at Connection.emit (events.js:214:7)
at Socket.<anonymous> (/Users/Dakota/Projects/2018-Udemy-Bootcamp/node-mongo-project/todos_api/node_modules/mongodb-core/lib/connection/connection.js:246:50)
at Object.onceWrapper (events.js:315:30)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at emitErrorNT (internal/streams/destroy.js:64:8)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {} }

Мой код выглядит следующим образом:

let mongoose = require('mongoose');
let dbUrl = 'mongodb://localhost/todo-api';
mongoose.set('debug', true);

mongoose.Promise = Promise;

mongoose.connect(dbUrl, { useNewUrlParser: true }).then(() => {
  console.log("Database connection is active");
}).catch(err => {
  console.log(err);
});

module.exports.Todo = require('./todo');

Я запустил mongod в терминале.

Эта проблема возникает дома в моей сети, но если я иду в кафе по улице, он подключится.Я прочитал несколько вещей о брандмауэрах, вызывающих проблемы и IP-адреса, и постарался, насколько мне известно, отрегулировать эти две вещи, но я все еще не могу решить эту проблему.

Любое понимание того, как я могрешить это?

1 Ответ

0 голосов
/ 13 декабря 2018

Сначала проверьте, правильно ли работает ваша служба mongodb.

Также вы можете заменить localhost на 127.0.0.1 следующим образом:

// connect to database
mongoose.connect('mongodb://127.0.0.1/todo-api', { useNewUrlParser: true});
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', function() {
  console.log(`MongoDB connected!`);
});

РЕДАКТИРОВАТЬ: Я нашел эта форма mongoose doc:

Наборы реплик MongoDB полагаются на возможность надежного определения доменного имени для каждогочлен.В Linux и OSX сервер MongoDB использует выходные данные команды hostname, чтобы определить доменное имя для отчета в наборе реплик.Это может привести к сбивающим с толку ошибкам, если вы подключаетесь к удаленному набору реплик MongoDB, работающему на машине, которая сообщает hostname как localhost:

// Can get this error even if your connection string doesn't include
// `localhost` if `rs.conf()` reports that one replica set member has
// `localhost` as its host name.
failed to connect to server [localhost:27017] on first connect

Если выВ случае аналогичной ошибки подключитесь к набору реплик с помощью оболочки mongo и выполните команду rs.conf(), чтобы проверить имена хостов каждого члена набора реплик. Следуйте инструкциям на этой странице, чтобы изменить имя хоста участника набора реплик .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...