Javascript 如何基于登录在Express.js中动态分配数据库路径?

Javascript 如何基于登录在Express.js中动态分配数据库路径?,javascript,node.js,express,Javascript,Node.js,Express,我有一个后端服务,我想将其用作web应用程序的单个入口点,并根据用户登录动态分配数据库路径。 我意识到这不是一个可扩展的解决方案。我打算在几个客户机的测试期间使用它(访问ALPHA数据库),并设置一个演示(访问SAND数据库)。 我编写了以下模块,作为一个简单的测试,以查看登录是否针对演示用户,所有其他登录都将转到其他资源: config.js var express = require('express'); var app = express();

我有一个后端服务,我想将其用作web应用程序的单个入口点,并根据用户登录动态分配数据库路径。 我意识到这不是一个可扩展的解决方案。我打算在几个客户机的测试期间使用它(访问ALPHA数据库),并设置一个演示(访问SAND数据库)。 我编写了以下模块,作为一个简单的测试,以查看登录是否针对演示用户,所有其他登录都将转到其他资源:

config.js

var express         = require('express');
var app             = express();

module.exports.dbPath = function  (login){
    console.log('login - ', login);
    if (login === 'demo@mysite.com'){
        return process.env.DB_SAND;
    } else {
        return process.env.DB_ALPHA;
    }
};
我的问题是,如何管理每个唯一的登录,并为该会话分配一个全局可访问的引用,以将每个用户会话一致地指向正确的数据库?
我是不是太复杂了?如果有一种不同的方法是更好的做法,我欢迎从另一个方向提出建议。

我会将其用作中间件,并将其附加到每个用户的
req
对象,类似于:

module.exports = {
    dbPath: function(req, res, next){
       var login = req.body.login;
       console.log('login - ', login);
       if (login === 'demo@mysite.com'){
          req.dbPath = 'DB_SAND';
       } else {
          req.dbPath = 'DB_ALPHA';
       }
       next();
    }
};

这对于登录来说似乎是合理的,但是后续调用的方法是什么?在这个模块中创建一个私有对象,为每个登录都保存一个k:v对,密钥是会话令牌,值是DB路径,这样安全吗?我想确保我不会无意中创建安全漏洞。我看不出
req
对象上的k:v对是如何构成安全漏洞的。(不要在
res
对象上执行此操作)。