mysql 动态加载数据库数据库连接,如何根据每个客户端动态连接mysql数据库?

我在这里使用mean stack m=mysql构建一个saas产品

我使用sequelize作为orm for mysql,我的连接:

const sequelize = new Sequelize('smallscale_superapp', 'root', 'root1', {

host: '127.0.0.1',

port: 3306,

dialect: 'mysql',

logging: false,

});

例如,我有一个管理超级应用程序,所以我创建了一个业务,例如业务代码

“001ABCD”,此业务代码存储在我的主管理数据库中,然后我告诉我的所有客户端转到一个名为“example.com”的特定URL。

因此,如果他们输入url,主页将看起来像slack.com有一个输入框,在名为example.com的硬编码值之后

所以现在我的客户在输入框中输入了我创建的业务代码并存储在我的主数据库中。

将业务代码放入输入框后,将打开一个名为“001abcd.example.com”的新子域(我正在检查主数据库中的业务代码是否匹配,如果匹配,则创建动态子域)。

因此,如果一切顺利,在创建子域客户端页面后,将显示为登录屏幕,在那里他们需要注册,注册详细信息需要在那里动态数据库

注释

:创建业务时,我将在主数据库表中获取客户端数据库、用户名、主机和密码。

如何使用sequencemysql来实现这一点?

如何在客户端登录的基础上获得动态连接的续集连接?

正如我之前所说,我在数据库中有客户机dbname等,我正试图创建这样的连接:

exports.dynamicDatabase = (req, res) => {

const { code } = req.params;

Business.find({

where: { code },

raw: true,

})

.then((data) => {

const sequelizeClient = new Sequelize(data.dbname, data.dbusername, data.dbpassword, {

host: data.dbhost,

port: 3306,

dialect: 'mysql',

logging: false,

});

})

.catch((err) => { res.status(400).send(err.message); });

};

现在,在这个函数之外,我正尝试同步表,如下所示:

sequelizeClient.authenticate().then((err) => {

if (err) {

console.log('There is connection in ERROR.');

} else {

console.log('Dynamic MYSQL Connection has been established successfully');

}

});

sequelizeClient.sync().then(() => {

console.log('Dynamic Missing Table Created');

}, (err) => {

console.log('An error occurred while creating the table:', err.message);

});

变量

后遗症

在函数内部,所以我无法访问?全球地。

所以我把变量设为全局变量,但有一个问题

我在函数中有sequellizeclient变量,这个函数只在url中输入我的域后执行,

但是sequenceclient.sync()不在函数内部,所以当我启动node server.js时,它会抛出错误:

sequelizeClient.authenticate().then((err) => {

[0] ^

[0]

[0] TypeError: Cannot read property 'authenticate' of undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值