[Ошибка: не удалось подключиться к [localhost: 27017]] от NodeJS до mongodb

У меня возникла проблема подключения к MongoDB от NodeJS, используя следующий пример кода. Я попытался запустить "mongod" с или без sudo, но код nodejs все еще не смог подключиться. Я могу успешно подключиться к базе данных с помощью "mongo".

Работает: MAC OS 10.6.8

   var mongoClient = require('mongodb').MongoClient;
   mongoClient.connect("mongodb://localhost:27017/test", function(error, db) {
        if(!error){
             console.log("We are connected");
        }
        else
           console.dir(error);
    });

получить следующую ошибку, выполняющуюся над кодом: [Ошибка: не удалось подключиться к [localhost: 27017]]

Также попробовал mongoose, но похожую ошибку:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/test');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
          console.log("DB connected");
    // yay!
    });

Выход: ошибка подключения: [Ошибка: не удалось подключиться к [localhost: 27017]]

Вот журнал mongod

mongod --help for help and startup options
2014-07-11T23:33:47.843-0700 kern.sched unavailable
2014-07-11T23:33:47.849-0700 [initandlisten] MongoDB starting : pid=29942 port=27017 dbpath=/data/db 64-bit host=usc8bcc8a0d0b1
2014-07-11T23:33:47.849-0700 [initandlisten]
2014-07-11T23:33:47.849-0700 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-07-11T23:33:47.849-0700 [initandlisten] db version v2.6.3
2014-07-11T23:33:47.849-0700 [initandlisten] git version: nogitversion
2014-07-11T23:33:47.849-0700 [initandlisten] build info: Darwin usc8bcc8a0d0b1 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
2014-07-11T23:33:47.849-0700 [initandlisten] allocator: system
2014-07-11T23:33:47.849-0700 [initandlisten] options: {}
2014-07-11T23:33:47.850-0700 [initandlisten] journal dir=/data/db/journal
2014-07-11T23:33:47.850-0700 [initandlisten] recover : no journal files present, no recovery needed
2014-07-11T23:33:47.901-0700 [initandlisten] waiting for connections on port 27017
2014-07-11T23:34:47.901-0700 [clientcursormon] mem (MB) res:48 virt:2810
2014-07-11T23:34:47.901-0700 [clientcursormon]  mapped (incl journal view):320
2014-07-11T23:34:47.901-0700 [clientcursormon]  connections:0

Ответы

Ответ 1

Ничего, я смог решить проблему, используя 127.0.0.1 вместо localhost, не уверен, почему я должен использовать ip-адрес. Мой сервер tomcat, apache, redis и даже node работает с использованием localhost, но не mongodb. Есть ли конфигурация, которую мне нужно изменить, чтобы она работала с использованием локального хоста?

Ответ 2

Попробуйте добавить 127.0.0.1 localhost в /private/etc/hosts файл.

Ответ 4

В первый раз я сделал очевидную ошибку: mongod (сервер mongo) даже не работал.

Во второй раз у меня были как сервер (mongod), так и клиент (mongo), запущенный на моей Windows; в отдельных командных запросах (конечно, mongo работает в первую очередь). mongod и/или его Командная строка была "повесилась" (т.е. последняя строка только сказала это, и последняя строка осталась такой, несмотря на попытки подключения:)

2017-06-20T12:31:02.937-0600 I NETWORK  [thread1] waiting for connections on port 27017

Я щелкнул в командной строке, нажав клавишу пробела, чтобы "отбросить ее", а в командной строке напечатаны строки, подобные этим:

2017-06-20T12:31:48.517-0600 I NETWORK  [thread1] connection accepted from 127.0.0.1:50260 #1 (1 connection now open)

Что сработало!

Ответ 5

да, я тоже столкнулся с этой ошибкой, а мои хосты: 127.0.0.1 xxxxxx(the ip of my computer) и когда я запускал npm start в экспресс-проекте, он получил такую ​​ошибку. После того, как я попытался изменить отображение 127.0.0.1 на localhost, он не ошибся.

Ответ 6

Кто-то из Github нашел решение: Вместо написания:

Mongoose.connect(config.database.url);

Запись:

Mongoose.connect(config.database.url, {
  keepAlive: true,
  reconnectTries: Number.MAX_VALUE,
  useMongoClient: true
});

(Источник https://github.com/Automattic/mongoose/issues/5399)