【问题标题】:Can I change databases on each request (Sails.js)我可以根据每个请求更改数据库吗(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 个类似的问题,但它们都在很长一段时间内都没有得到解答。 (Herehere

【问题讨论】:

    标签: node.js postgresql sails.js waterline


    【解决方案1】:

    我认为您正在寻找类似子应用的东西

    sails-hook-subapps

    但它是实验模块。所以我不建议在生产中使用它。其他也不好的选择是像这样乘以你的模型:

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

    在“父”模型中,您将选择要将发送操作发送到哪个模型。比如写法:

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

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

    attributes: parentModel.attributes
    

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 2016-06-11
      • 2019-11-14
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多