Правильная реализация Multi Tenancy в Node Application - PullRequest
2 голосов
/ 03 мая 2020

В настоящее время я должен решить, как реализовать многопользовательский режим с моим приложением узла наилучшим возможным способом. На данный момент у меня есть свое common_db_connection, где у меня есть таблица поиска, в которой я могу запросить имя базы данных арендаторов для каждого конкретного пользователя c.

У меня есть функция распознавателя, которая использует идентификатор пользователя для получения имя базы данных клиента и, наконец, верните соединитель my 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)
        }
    })

});

Это правильный способ сделать это, и безопасно ли это делать как это?

Заранее спасибо!

...