Javascript 使用sequelize根据express.js中的路由更改数据库连接
是否可以根据路由更改Javascript 使用sequelize根据express.js中的路由更改数据库连接,javascript,node.js,express,sequelize.js,Javascript,Node.js,Express,Sequelize.js,是否可以根据路由更改sequelize中的数据库连接 例如,用户可以访问网站中的两个不同安装: -example.com/foo -example.com/bar 登录后,用户将被重定向到example.com/foo 要获取foo站点的所有任务,他们需要访问example.com/foo/tasks bar网站使用一个单独的数据库,因此,如果他们想获得bar的所有任务,他们必须访问example.com/bar/tasks 每个安装都有自己的数据库,所有数据库都有相同的模式 是否可以根据访问的
sequelize
中的数据库连接
例如,用户可以访问网站中的两个不同安装:
-example.com/foo
-example.com/bar
登录后,用户将被重定向到example.com/foo
要获取foo
站点的所有任务,他们需要访问example.com/foo/tasks
bar
网站使用一个单独的数据库,因此,如果他们想获得bar
的所有任务,他们必须访问example.com/bar/tasks
每个安装都有自己的数据库,所有数据库都有相同的模式
是否可以根据访问的路由更改数据库连接
*登录只发生一次我认为最好根据路线更改集合。 在同一数据库中具有
foo_任务
collection和bar_任务
collection
或者在
tasks
集合中使用属性type
,指定任务是“foo任务”还是“bar任务”。这是可能的。有很多方法可以做到这一点。以下是我可能的做法
路由器.js
Connection.js
Tasks.js
也就是说,当您想要在两者之间复制模式时,您将不得不面对一些有趣的问题,但对于另一个问题来说,这可能是最好的
我希望这有帮助 如何以这种动态方式进行?例如,您正在connection.js中硬编码这两个数据库?如果有1000个数据库动态地处理,那么考虑**Bo.DeV和子域名的博客系统是数据库名称,你需要多少连接?我有同样的麻烦。
var router = express.Router()
// This assumes the database is always the 2nd param,
// otherwise you have to enumerate
router.use('/:database/*', function(req, res, next){
req.db = req.params.database;
next();
}
var fooDB = new Sequelize('postgres://user:pass@example.com:5432/foo');
var barDB = new Sequelize('postgres://user:pass@example.com:5432/bar');
module.exports = {
foo: fooDB,
bar: barDB,
}
var connection = require('connection);
function getTasks(req, params){
var database = connection[req.db];
//database now contains the db you wish to access based on the route.
}