【问题标题】:Sails v0.10.x doesn't respect connection config in production.js when in production modeSails v0.10.x 在生产模式下不尊重 production.js 中的连接配置
【发布时间】:2014-08-08 02:29:42
【问题描述】:

在 Sails v.0.10.x 中设置数据库连接以供生产使用的正确方法是什么?当我在生产模式(环境)下启动我的应用程序时,我希望 Sails 使用我在 production.js 中提到的连接,但事实并非如此。它似乎总是使用默认连接 - 'localDiskDb'。

但是,当我在开发模式(环境)下开始航行时,它确实使用了 config/development.js 中指定的连接,正如我所预料的那样。

更新

注意:我在写production.js的位置时弄错了。它在 /config/env/production.js 中,就像 sgress454 所说的那样。实际上,这个文件是由生成器创建并放在正确的位置,我没有更改它。

config/env/production.js 看起来像这样:

// config/env/production.js

module.exports = {
    connection: 'mongo_production'
};

config/models.js 看起来像这样:

// config/models.js

module.exports.models = {
    // connection: 'localDiskDb'
};

config/connections.js 如下所示:

// config/connections.js

module.exports.connections = {
    mongo_development: {
        adapter: 'sails-mongo',
        host: 'localhost',
        port: 27017,
        user: '',
        password: '',
        database: 'my_local_db'
    },

    mongo_production: {
        adapter: 'sails-mongo',
        url: 'mongodb://me:mypw@foobar.mongohq.com:10052/my_production_db'
    }
};

【问题讨论】:

    标签: sails.js sails-mongo


    【解决方案1】:

    这里有几个问题:

    1. 每个环境的配置文件需要放在 config/env 子目录中,否则它们将被视为与常规配置文件相同(即不给予优先级)。如果您有多个文件尝试设置相同的密钥,结果将是不可预测的。
    2. 您正试图通过设置connection 配置键来更改模型的默认连接;必须是models.connection

    将两者放在一起,您需要一个 config/env/production.js 文件,如下所示:

    module.exports = {
        models: {
            connection: 'mongo_production'
        }
    };
    

    那么在生产模式下提升时,模型将默认使用mongo_production连接。

    【讨论】:

    • 首先,感谢您这么快回答我的问题。接下来,我搞错了production.js的位置。它一直都在正确的位置,我更新了问题以反映这一点。最后,您的第 2 点是正确的!一旦我设置了models.connection 键,一切正常。再次感谢。
    【解决方案2】:

    在sails 0.12 版中,config/env 文件夹下会有两个env 文件。 所以我们可以在这两个文件中编写特定于模式(生产/开发)的配置。
    为了在特定模式下运行我们的 Sails 应用程序,我们必须遵循以下步骤:

    步骤 1) 在 config/local.js 文件中

    module.exports = {  
       // port: process.env.PORT || 1337,   // comment this line if you want to set the different ports for different modes
       environment: process.env.NODE_ENV || 'development'  
    };
    

    第 2 步)在 env/developement.js 文件中
    编写开发特定的配置。

    module.exports = {
      port: 8080, // will change from default port 1337 to 8080
      models: {
          connection: 'developement_db',
          migrate: 'alter'
      }
    };
    

    第 3 步)在 env/production.js 文件中
    编写生产特定的配置。

    module.exports = {
      port: 9090, // will change from default port 1337 to 9090
      models: {
          connection: 'production_db',
          migrate: 'safe'
      }
    };
    

    步骤 4) 以特定模式运行sails app,

    • 在生产模式下运行

      $ NODE_ENV=production npm start

      Sails 将在 9090 端口上运行

    • 在开发模式下运行

      $ NODE_ENV=developement npm start

      Sails 将在 8080 端口上运行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多