Я получаю эту ошибку о том, что не мое приложение не может подключиться к mongo после запуска "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.info("Database connection is active");
}).catch(err => {
console.info(err);
});
module.exports.Todo = require('./todo');
Я запустил mongod в терминале.
Эта проблема возникает дома в моей сети, но если я пойду в кофейню на улице, она подключится. Я прочитал несколько вещей о брандмауэрах, вызывающих проблемы, и IP-адресах, и попытался, насколько мне известно, отрегулировать эти две вещи, но я, похоже, до сих пор не могу понять эту проблему.
Любое представление о том, как я могу это решить?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Сначала проверьте, правильно ли работает ваша служба 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.info(`MongoDB connected!`);
});
Обновлено: Я нашел документ мангуста формы это:
MongoDB replica sets rely on being able to reliably figure out the domain name for each member. On Linux and OSX, the MongoDB server uses the output of the
hostnamecommand to figure out the domain name to report to the replica set. This can cause confusing errors if you're connecting to a remote MongoDB replica set running on a machine that reports itshostnameaslocalhost:
// 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
If you're experiencing a similar error, connect to the replica set using the mongo shell and run the
rs.conf()command to check the host names of each replica set member. Follow this page's instructions to change a replica set member's host name.
Это сработало, большое спасибо! Любое понимание того, почему это могло вызвать у меня проблемы? Боковое примечание, это работало как с node, так и с nodemon
Ваша база данных работает ?? Какой вывод
service mongod statusв терминале?