自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
}
所以我尝试将pool: true
包含在Sails的connections.js
文件中:
someMysqlServer: {
adapter: 'sails-mysql',
host: '127.0.0.1',
user: 'root',
password: '',
pool: true,
database: 'mydatabase'
},
服务器仍在运行,我从数据库恢复数据,但我完全不确定是否已设置连接抛出池服务。有没有办法检查这个功能?
感谢。
答案 0 :(得分:4)
代码中的所有内容
你可以看到sails-mysql(节点模块)的代码,你肯定会找到解决方案。
在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--*/
默认使用connectionLimit 5设置使用池。
现在转到那里的node-modules/sails-mysql/lib/connections/spawn.js
文件
你看到这个片段。
/*--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