我可以在每个请求上更改数据库(Sails.js)

时间:2016-04-07 09:57:44

标签: node.js postgresql sails.js waterline

我有几个PHP脚本,我正在迁移到Node.js.我正在使用Sails.js,我想知道如何根据请求参数更改每个请求的数据库。

目前我有3-4个相同的PostgreSQL数据库。我们只是说每个数据库对应一个不同的客户端。

以下是建立数据库连接的当前PHP脚本的一部分:

$database = $_GET['db'];
$conn_details = "host=localhost port=5432 dbname=$database user=****** password=******";
$dbconn = pg_connect($conn_details);

在这里,您可以看到数据库名称来自请求参数" db"。

我想在sails.js控制器中使用类似的功能。我知道我可以在connections.js中声明多个数据库,并且我可以让模型使用不同的数据库,但我所追求的是模型保持不变,只有数据库根据每个请求进行更改。

我发现了2个类似的问题,但现在已经有一段时间没有得到答复了。 (Herehere

提前感谢帮助。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找类似子应用程序的东西

sails-hook-subapps

但它是实验模块。所以我不建议在生产中使用它。其他选项也不是很好,就像你的模型那样倍增:

  • 一个包含所有方法,属性和“东西”的主要模型
  • 许多连接配置的模型

在“父”模型中,您将选择要发送动作的模型。例如写方法:

getModel: function(dbName){
     return models[dbName];
}

在模型对象中,您将存储具有不同连接的所有模型。不确定验证器在这种情况下的工作原理。您需要测试是否不需要在子模型中执行类似的操作

attributes: parentModel.attributes

希望它会有所帮助。