Sails.js、MongoDb:尝试连接时超时;可以使用连接池吗?
Sails.js, MongoDb: timeout when trying to connect; possible to use the connection pool?
Sails 服务器:
- Windows 10 个 64 位
- Sails.js 1.0.0-36
- Node.js 6.10.2
MongoDB 服务器:
- Virtualbox 上的 Centos 7,仅主机网络
- Mongodb 3.4.4,监听所有接口,未配置auth
我可以成功提升 Sails、连接数据存储和使用模型,没有任何问题。
但是,此测试将导致超时:
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 连接池而不是创建新连接?如何?我已经搜索了文档,但找不到具体的参考资料。
试试这个
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
test.equal(null, err);
test.ok(db != null);
});
参考:here
代码错误 -- 使用端口 27027,而它应该是 27017。
由于我没有注意到正确的回退,数据存储区连接正常工作
Sails 服务器:
- Windows 10 个 64 位
- Sails.js 1.0.0-36
- Node.js 6.10.2
MongoDB 服务器:
- Virtualbox 上的 Centos 7,仅主机网络
- Mongodb 3.4.4,监听所有接口,未配置auth
我可以成功提升 Sails、连接数据存储和使用模型,没有任何问题。
但是,此测试将导致超时:
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 连接池而不是创建新连接?如何?我已经搜索了文档,但找不到具体的参考资料。
试试这个
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
test.equal(null, err);
test.ok(db != null);
});
参考:here
代码错误 -- 使用端口 27027,而它应该是 27017。
由于我没有注意到正确的回退,数据存储区连接正常工作