2015-11-23 4 views
1

при попытке подключиться к Монго дб из каталога проекта я получаю этоне может подключиться к локальному серверу MongoDB с nodejs

/Пользователи/tadeothompson/Документы/Проектные работы/стрессовое/сайт/node_modules/подключения-Монго/lib/connect-mongo.js: 133 throw err; ^ MongoError: не удается подключиться к серверу на Collection.listIndexes (/ Users/tadeothompson/Документы/Проектные работы/стрессовые/сайт/node_modules/мангуст/node_modules/MongoDB/Библиотека/collection.js: 1712: 11) в indexInformation (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/db.js: 1531: 25) at Db.indexИнформация (/ Пользователи/tadeothompson/Documents/design work/stressful /site/node_modules/mongoose/node_modules/mongodb/lib/db.js:1498:44) at protectIndex (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/db .js: 1003: 8) at Db.ensureIndex (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/db.js: 982: 44) at обеспечитьIndex (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/collection.js: 1772: 13) at Collection.ensureIndex (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/collection.js: 1760: 44) at connectionReady (/ Users/tadeothompson/Documents/design work/stressful/site/node_modules/connect-mongo/lib/connect-mongo.js: 141: 27) at Db.collection (/ Пользователи/tadeothompson/Documents/design work/stressful/site/node_modules/mongoose/node_modules/mongodb/lib/db.js: 425: 20) at initWithNativeDb (/ Users/tadeothompson/Documents/design work/stressful/site/node_modules/connect-mongo/lib/connect-mongo.js: 207: 20) at process._tickCallback (node.js: 355: 11) at Функция.Module.runMain (module.js : 503: 11) при запуске (node.js: 129: 16) на node.js: 814: 3

удалось подключиться, используя простое приложение (код ниже)

* 

var MongoClient = require('mongodb').MongoClient; 
    // Connect to the db 
    MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) { 
     if(!err) { 
     console.log("We are connected"); 
     } 
    }); 

*

the main node file of the app in question code is below: 


var express = require('express'); 
var bodyParser = require('body-parser'); 
var cookieParser = require('cookie-parser'); 
var expressSession = require('express-session'); 
var mongoStore = require('connect-mongo')({session: expressSession}); 
var mongoose = require('mongoose'); 
require('./models/users_model.js'); 
var conn = mongoose.connect('mongodb://localhost:27017/stressfullproject'); 
var app = express(); 
app.engine('html', require('ejs')._express); 
app.set('views', './site' + '/views');   
app.set('view engine', 'html'); 
app.use(bodyParser()); 
app.use(cookieParser()); 
app.use(expressSession({ 
    secret: 'stress', 
    cookie: {maxAge: 60*60*1000}, 
    store: new mongoStore({ 
     db: mongoose.connection.db, 
     collection: 'sessions' 
    }) 
})); 
require('./routes/routes')(app); 
app.listen(80); 

*

моя определенная схема

*var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 
var UserSchema = new Schema({ 
    username: { type: String, unique: true }, 
    email: String, 
    hashed_password: String 
}) 
mongoose.model('User', UserSchema)* 

потому что я могу подключиться к другому приложению, думая о проблеме с одним из моих модулей? Ив обыскал все.

заранее спасибо

+0

не могли бы вы дать полный стек трассировки, пожалуйста. –

ответ

1

Мое предположение, что вы используете два модуля, а именно MongoClient и мангуст и пытаются подключиться к порту 27017. Теперь в этой гонке только один выиграет и будет блокировать этот порт. Если вы попытаетесь подключиться к этому порту, это даст вам ошибку, аналогичную той, которую вы получаете выше. Мое предложение, не используйте MongoClient. использование только mongoose. Для mongoose существует большая помощь, и многие видеоуроки на youtube используют ее. Если это не поможет, дайте мне знать.

Давайте подготовим вас с некоторым кодом. Я не использую MongoClient сейчас, но когда я использовал этот код, см. Его работу. Если это не нравится, вставьте стек.

var MongoClient=require('mongodb').MongoClient, 

server=require('mongodb').Server; 

var mongoclient=new MongoClient(new server('localhost',27017)); 

mongoclient.connect('mongodb://localhost:27017/course',function(err,db) 
{ 
    if(err) throw err; 
    //var db=mongoclient.db('course'); 
    var query={'grade':100}; 

    db.collection('grades').findOne(query,function(err,doc) 
     { 
      if(err) throw err; 
      console.dir(doc); 
      db.close(); 
     }); 
}); 
+0

Спасибо за помощь; Я не запускаю оба модуля одновременно. Эта проблема возникла задолго до того, как я создал «небольшой тестовый модуль». Я только создал тестовый модуль и запускал его отдельно, чтобы узнать, будет ли соединение создано, надеюсь, исключить проблему с сервером mongod. –

+0

так что ваш сервер mongod работает нормально? 'mongod --dbpath ~/data/db' открывает соединение? –

+0

Убедитесь, что ваш порт 27017 освобожден. путем запуска 'netstat -tulpn' –

0

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

+0

Я определил схему в другом модуле: (код добавлен выше). вам нужно вернуться к «следующей» проблеме –

1

я нашел ответ в другой переполнения стека после here

проблема в том, что сессия (или что-то еще за пределами мангуста) пытается подключиться к базе данных до мангуст установлено соединение.

Смежные вопросы