1

在 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'
    }
};
4

2 回答 2

2

这里有几个问题:

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

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

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

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

于 2014-08-08T04:43:49.973 回答
0

在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 应用程序,

  • 在生产模式下运行

    $ NODE_ENV=production npm start

    Sails 将在 9090 端口上运行

  • 在开发模式下运行

    $ NODE_ENV=developement npm start

    Sails 将在 8080 端口上运行

于 2017-12-07T08:03:15.643 回答