【发布时间】:2020-05-03 13:18:02
【问题描述】:
我目前必须决定如何以最佳方式使用我的节点应用程序实现多租户。 现在,我有我的 common_db_connection,我有一个查找表,我可以在其中查询每个特定用户的租户数据库名称。
我有一个解析器函数,它使用用户 ID 来获取租户数据库名称,最后返回我的 mysql 连接器。
我的解决方案如下所示:
var conn_common_db = mysql.createPool({
connectionLimit : 150,
host : 'localhost',
user : 'root',
password : '',
database : 'common_db'
});
function conn_resolver(req) {
conn_common_db.query("SELECT tenant_db_name from tenants where tenant_uid = (SELECT tenant_uid from tenant_user where user_uid = ?)",
[requst.session.user_uid], function(err, result) {
if(!err) {
tenant_db_name = result[0].tenant_db_name
return mysql.createPool({
connectionLimit : 150,
host : 'localhost',
user : 'root',
password : '',
database : tenant_db_name
});
}
else{
console.log(err)
return null;
}
})
}
app.get('/', function(request, response) {
conn_resolver(req).query("SELECT * FROM user", function(err, result) {
if(!err) {
console.log(result)
}
else{
//res.send(err)
}
})
});
这是正确的做法吗?这样做是否安全?
提前致谢!
【问题讨论】:
-
恕我直言,作为实现多租户的方法之一,它很好
标签: mysql node.js multi-tenant saas