【问题标题】:Sails.js, MongoDb: timeout when trying to connect; possible to use the connection pool?Sails.js,MongoDb:尝试连接时超时;可以使用连接池吗?
【发布时间】:2017-07-19 18:23:23
【问题描述】:

Sails 服务器:

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

MongoDB 服务器:

  • Virtualbox 上的 Centos 7,仅主机网络
  • Mongodb 3.4.4,监听所有接口,未配置身份验证

我可以毫无问题地成功提升 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 连接池而不是创建新连接?如何?我已经搜索了文档,但找不到具体的参考资料。

【问题讨论】:

    标签: node.js mongodb sails.js database-connection sails-mongo


    【解决方案1】:

    代码错误 - 使用端口 27027,而它应该是 27017。

    由于我没有注意到正确的回退,数据存储连接正常

    【讨论】:

      【解决方案2】:

      试试这个

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

      参考:here

      【讨论】:

      • err 绝对不是null ---这是我得到的错误,不需要以不同的方式测试它,谢谢。
      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多