我可以根据每个请求更改数据库吗(Sails.js)
Posted
技术标签:
【中文标题】我可以根据每个请求更改数据库吗(Sails.js)【英文标题】:Can I change databases on each request (Sails.js) 【发布时间】:2016-07-28 03:05:42 【问题描述】:我有一些 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 个类似的问题,但它们都在很长一段时间内都没有得到解答。 (Here 和 here)
【问题讨论】:
【参考方案1】:我认为您正在寻找类似子应用的东西
sails-hook-subapps
但它是实验模块。所以我不建议在生产中使用它。其他也不好的选择是像这样乘以你的模型:
一个包含所有方法、属性和“东西”的主模型 许多带有连接配置的模型在“父”模型中,您将选择要将发送操作发送到哪个模型。比如写法:
getModel: function(dbName)
return models[dbName];
在模型对象中,您将存储具有不同连接的所有模型。不确定验证器在这种情况下如何工作。您需要测试是否不需要在子模型中执行此类操作
attributes: parentModel.attributes
【讨论】:
以上是关于我可以根据每个请求更改数据库吗(Sails.js)的主要内容,如果未能解决你的问题,请参考以下文章
我可以在sails.js 资产目录中轻松运行vue.js webapp 吗?