在生产模式下,Sails v0.10.x不遵守production.js中的连接配置

时间:2014-08-08 02:29:42

标签: sails.js sails-mongo

在Sails v.0.10.x中设置数据库连接以供生产使用的正确方法是什么?当我在生产模式(环境)中启动我的应用程序时,我希望Sails使用我在production.js中引用的连接,但它没有。它似乎始终使用默认连接 - ' localDiskDb'。

但是,当我在开发模式(环境)中启动sails时,它确实使用了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'
    }
};

2 个答案:

答案 0 :(得分:2)

这里有几个问题:

  1. 每个环境配置文件需要进入 config / env 子目录,否则它们将被视为与常规配置文件相同(即,没有给定优先级)。如果您有多个文件试图设置相同的密钥,结果将无法预测。
  2. 您正尝试通过设置connection配置密钥来更改模型的默认连接;它必须是models.connection
  3. 将两者放在一起,你需要一个 config / env / production.js 文件,如下所示:

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

    然后,在生产模式下提升时,模型默认使用mongo_production连接。

答案 1 :(得分:0)

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

第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)以特定模式运行风帆应用

  • 以生产模式运行

    <强> $ NODE_ENV=production npm start

    Sails将在端口9090上运行

  • 以开发模式运行

    <强> $ NODE_ENV=developement npm start

    Sails将在端口8080上运行