2016-12-30 88 views
1
events.js:141 
     throw er; // Unhandled 'error' event 
MongoError: connection 0 to localhost:27017 timed out 
at Function.MongoError.create (/home/ubuntu/scripts/node_modules/mongodb-core/lib/error.js:29:11) 
    at Socket.<anonymous> (/home/ubuntu/scripts/node_modules/mongodb-core/lib/connection/connection.js:184:20) 
    at Socket.g (events.js:260:16) 
    at emitNone (events.js:67:13) 
    at Socket.emit (events.js:166:7) 
    at Socket._onTimeout (net.js:318:8) 
    at _runOnTimeout (timers.js:524:11) 
    at _makeTimerTimeout (timers.js:515:3) 
    at Timer.unrefTimeout (timers.js:584:5) 

那麼有連接過程中沒有錯誤,但是當試圖保存某些型號/收藏它運行一段時間,然後它拋出這個錯誤。 順便說一下,我還有另一個節點進程連接到同一個MongoDB服務器。任何幫助,高度讚賞。MongoError:0連接到本地主機:27017超時

+0

添加約event.js細節文件 –

+0

我認爲這是一幢建於events.js中的NodeJS(eventEmitter類)。我不知道它在哪裏。 – Prataksha

+0

按照這個http://stackoverflow.com/questions/8904991/mongodb-cant-connect-to-localhost-but-can-connect-to-localhosts-ip-address –

回答

3
var mongoose = require('mongoose'); 
var option = { 
    server: { 
     socketOptions: { 
      keepAlive: 300000, 
      connectTimeoutMS: 30000 
     } 
    }, 
    replset: { 
     socketOptions: { 
      keepAlive: 300000, 
      connectTimeoutMS: 30000 
     } 
    } 
}; 

var mongoURI = process.env.MONGODB_URI; 
mongoose.connect(mongoURI, option).then(function(){ 
    //connected successfully 
}, function(err) { 
    //err handle 
}); 
3

你的查詢花費很長的時間。而mongo本身有一個默認超時設置。因此,如果查詢花費的時間超過了超時時間,它就會超時。

+0

好的,thanx爲您的輸入。 – Prataksha

1

你必須使用你的連接這CONFIGS: 的keepAlive:300000,connectTimeoutMS:30000

+0

如何使用nodejs驅動程序執行此操作? MongoClient.connect( 「mongodb的://本地主機:27017/articledb」,{ 的keepAlive:30000, connectTimeoutMS:30000, },功能(ERR,分貝){}) – harryfeng

+0

@harrywilson看到的https://要旨.github.com/mongolab-組織/ 9959376 – sabrehagen