2017-07-19 185 views
0

帆服務器:Sails.js,MongoDb:嘗試連接時超時;可能使用連接池?

  • 的Windows 10的64位
  • Sails.js 1.0.0-36
  • Node.js的6.10.2

的MongoDB服務器:

  • Virtualbox上的Centos 7,僅主機聯網
  • Mongodb 3.4.4,聽完所有接口,沒有權威性配置

我可以成功地解除帆,連接數據存儲,並使用這些模型沒有任何問題。

然而,本次測試將導致在超時:

let mongo = require('mongodb'); 


    let uri = 'mongodb://' + process.env.MONGO_SERVER + ':' + process.env.MONGO_PORT + '/sails'; 

    mongo.MongoClient.connect(uri, function(err, db) { 
    if(err){ 


     return res.serverError(err); 
    } 
    return res.json("open"); 

    }); 


{ MongoError: failed to connect to server [192.168.99.2:27027] on first connect [MongoError: connect ETIMEDOUT 192.168.99.2:27027] 
    at Pool.<anonymous> (....\node_modules\mongodb-core\lib\topologies\server.js:329:35) 
    at emitOne (events.js:96:13) 
    at Pool.emit (events.js:188:7) 
    at Connection.<anonymous> (....\node_modules\mongodb-core\lib\connection\pool.js:280:12) 
    at Connection.g (events.js:291:16) 
    at emitTwo (events.js:106:13) 
    at Connection.emit (events.js:191:7) 
    at Socket.<anonymous> (....\node_modules\mongodb-core\lib\connection\connection.js:187:49) 
    at Socket.g (events.js:291:16) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at emitErrorNT (net.js:1281:8) 
    at _combinedTickCallback (internal/process/next_tick.js:80:11) 
    at process._tickDomainCallback (internal/process/next_tick.js:128:9) 
    name: 'MongoError', 
    message: 'failed to connect to server [192.168.99.2:27027] on first connect [MongoError: connect ETIMEDOUT 192.168.99.2:27027]' } 

我使用的數據存儲上使用完全相同的服務器信息。

那麼這裏可能會出現什麼問題?

同樣重要的是:是否可以使用全局Sails連接池而不是創建新連接?怎麼樣?我搜索了文檔,但找不到具體的參考文獻。

回答

1

代碼是錯誤的 - 使用端口27027,而應該是27017

數據存儲的連接工作,因爲正確的後備我沒有」的t notice

0

試試這個

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

MongoClient.connect("mongodb://localhost:27017/test", function(err, db) { 
    test.equal(null, err); 
    test.ok(db != null); 

}); 

編號:here

+0

'err'絕對不是'null' ---這就是我得到的錯誤,不需要以不同的方式測試它,謝謝。 – noderman