【问题标题】:Connection pooling with SailsjsSailsjs 的连接池
【发布时间】:2016-03-10 15:25:27
【问题描述】:

自从there is not documentation about how to create connection poolings with Sailsjs 以来,我一直在搜索它,我发现sails-mysql adapter 确实有任何池配置,但与测试有关:

{
    host: process.env.WATERLINE_ADAPTER_TESTS_HOST || 'localhost',
    // (...)
    database: process.env.WATERLINE_ADAPTER_TESTS_DATABASE || 'sails_mysql',
    pool: true,
    connectionLimit: 10,
    waitForConnections: true
}

所以我尝试在 Sails 中将 pool: true 包含到我的 connections.js 文件中:

someMysqlServer: {
    adapter: 'sails-mysql',
    host: '127.0.0.1',
    user: 'root',
    password: '',
    pool: true,
    database: 'mydatabase'
},

服务器仍在运行,我从数据库中恢复数据,但我完全不确定我是否设置了连接并抛出池服务。有没有办法检查这个功能?

谢谢。

【问题讨论】:

标签: mysql sails.js connection-pooling


【解决方案1】:

一切尽在代码中

你可以看到sails-mysql(node modules)的代码,你肯定会找到解决你疑惑的办法。 在sails-mysql 模块中,主要的js 是node-modules/sails-mysql/lib/adapter.js(根据node-modules/sails-mysql/package.json)。 所以在adapter.js文件中你可以看到..

/*--codes--*/
var _spawnConnection = require('./connections/spawn');
/*--codes--*/
defaults: {
  pool: true,
  connectionLimit: 5,
  waitForConnections: true
},
/*--codes--*/

默认设置为使用连接限制为 5 的池。

现在转到文件node-modules/sails-mysql/lib/connections/spawn.js那里 你看到这个sn-p。

/*--codes--*/
/*--codes--*/
  if (connectionObject.connection.pool) {
    connectionObject.connection.pool.getConnection(function (err, conn) {
      afterwards(err, conn);
    });
    return;
  }

  // Use a new connection each time
  var conn = mysql.createConnection(connectionObject.config);
  conn.connect(function (err) {
    afterwards(err, conn);
  });
  return;
/*--codes--*/
/*--codes--*/

这里检查适配器是否设置为使用池,如果它是pool:true,则从池中生成一个连接,否则使用单独的连接而不使用池...

现在你的疑问....在你的 config/connections.js 如果你定义一个适配器像

mysqlServerMaster: {
    adapter: 'sails-mysql',
    host: 'localhost',
    user: 'root',
    password: 'root',
    pool: false,
    database: 'payments_db'
},

那么你正在使用没有池的mysql。

如果你使用这个设置...

mysqlServerMaster: {
    adapter: 'sails-mysql',
    host: 'localhost',
    user: 'root',
    password: 'root',
    pool: true,
    connectionLimit: 10,
    database: 'payments_db'
},

那么您将拥有一个带有 connectioLimit ===10 的 mysql 连接池 当然。 我希望你现在明白了。 https://www.npmjs.com/package/sails-mysql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2013-08-20
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多