Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Sequelize:根据请求在运行时连接到数据库_Node.js_Postgresql_Orm_Sequelize.js_Sequelize Cli - Fatal编程技术网

Node.js Sequelize:根据请求在运行时连接到数据库

Node.js Sequelize:根据请求在运行时连接到数据库,node.js,postgresql,orm,sequelize.js,sequelize-cli,Node.js,Postgresql,Orm,Sequelize.js,Sequelize Cli,我正在开发一个node.js应用程序,需要连接多个数据库。其中一个数据库是中央数据库,其中包含所有人共有的信息。然后是国家级数据库,根据国家存储数据 我正在应用程序中使用sequelize ORM。 数据库是postgresql。 框架是express 问题是,我想根据要使用的数据库和模型应自动连接到相应数据库的请求来决定运行时。我看过这个问题,但没发现它有帮助 我还查看了其他论坛,但没有找到任何内容。您需要创建与每个数据库对应的对象,并在每个对象上实例化Sequelize。此外,对于每个seq

我正在开发一个node.js应用程序,需要连接多个数据库。其中一个数据库是中央数据库,其中包含所有人共有的信息。然后是国家级数据库,根据国家存储数据

我正在应用程序中使用sequelize ORM。
数据库是postgresql。
框架是express

问题是,我想根据要使用的数据库和模型应自动连接到相应数据库的请求来决定运行时。我看过这个问题,但没发现它有帮助


我还查看了其他论坛,但没有找到任何内容。

您需要创建与每个数据库对应的对象,并在每个对象上实例化Sequelize。此外,对于每个sequelize实例,您需要导入模型(假设所有这些数据库具有完全相同的表和模型表示)

这只是一些示例代码,需要重构才能发挥作用(引入一些循环等)。它应该向您展示如何在单个应用程序中使用多个数据库。如果您想在某处使用例如
country1
数据库,您只需

import { country1DB } from './databases';

country1DB.User.findAll({...});
上述代码将在先前指定的
country1
数据库中执行
SELECT*FROM users
。示例
express
路线可能如下所示:

import * as databases from './databases';

app.get('/:dbIndex/users', (req, res) => {
    databases['country' + req.params.dbIndex + 'DB'].User.find().then(user => {
        res.json(user.toJSON());
    });
});

或者,更好的方法是,您可以编写一些
中间件
函数,在每次请求之前运行,并负责选择适当的数据库进行进一步操作。

您提到的问题实际上是对您的问题的回答。为什么您觉得它没有帮助?我尝试在代码中使用相同的方法,但使用模型绑定到数据库没有成功。感谢@piotrbienias的回复。我将在我的应用程序中尝试该解决方案,并将以“我已尝试此解决方案”的状态返回。我没有使用相同的代码。但你的想法是对的。我需要做修改和它的运行。
import * as databases from './databases';

app.get('/:dbIndex/users', (req, res) => {
    databases['country' + req.params.dbIndex + 'DB'].User.find().then(user => {
        res.json(user.toJSON());
    });
});