使用没有数据库的连接池

在托管有多个数据库的数据库服务器上实现多租户。

多租户是当今企业应用程序的常见要求,不建议为数据库服务器中的每个数据库创建连接池。所以,我们可以做的是创建与数据库服务器的连接池,而不是按需在数据库服务器上托管的数据库之间切换。

假设我们的应用程序为数据库服务器上托管的每个公司提供不同的数当用户点击应用程序时,我们将连接到相应的公司数据库。这是关于如何做到这一点的例子: -

var pool  = mysql.createPool({
      connectionLimit : 10,
      host            : 'example.org',
      user            : 'bobby',
      password        : 'pass'
    });
    
pool.getConnection(function(err, connection){
    if(err){
        return cb(err);
    }
    connection.changeUser({database : "firm1"});
    connection.query("SELECT * from history", function(err, data){
        connection.release();
        cb(err, data);
    });
});

让我打破这个例子: -

在定义池配置时,我没有给出数据库名称,只给出了数据库服务器,即

{
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bobby',
  password        : 'pass'
}

因此,当我们想在数据库服务器上使用特定数据库时,我们要求连接使用以下命令来命中数据库: -

    connection.changeUser({database : "firm1"});

你可以在这里参考官方文档