【问题标题】:Handling database environment configuration in Sails.js在 Sails.js 中处理数据库环境配置
【发布时间】:2015-03-20 02:49:21
【问题描述】:

我遇到的问题与official documentation 中的以下引用有关:

注意如果模型使用到适配器的任何连接,那么到该适配器的所有连接都将加载到sails.lift 上,无论模型是否实际使用它们。在上面的例子中,如果一个模型被配置为使用 localMysql 连接,那么 localMysql 和 remoteMysql 都会在运行时尝试连接。因此,最好按环境拆分连接配置并将它们保存到适当的特定于环境的配置文件中,或者注释掉任何您不希望处于活动状态的连接。

如何配置生产服务器的连接?

我的 connections.js 文件如下所示:

module.exports.connections = {

  mongoDev: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    user: 'username',
    password: 'password',
    database: 'database'
  },

  mongoLive: {
    adapter: 'sails-mongo',
    host: 'host.mongolab.com',
    port: 31681,
    user: 'user',
    password: 'password',
    database: 'database'
  }   
};

在我的环境配置文件中,我有:

development.js

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

production.js

module.exports = {
  models: {
     connection: 'mongoLive'
  },
  port: 3000,
};

这适用于我的本地计算机,因为生产数据库服务器位于外部服务器上。 在生产环境中,我收到以下错误:

[Error: failed to connect to [localhost:27017]]

如果我从连接对象中删除 mongoDev 对象,它会起作用。

我也尝试过使用 adapters.js,但这只会导致一些弃用错误。

$ sails -v
info: v0.9.9

我在运行sails lift 时得到了一些不同的东西:

info:    Sails         
info:    v0.10.5

【问题讨论】:

    标签: javascript node.js database-connection sails.js sails-mongo


    【解决方案1】:

    您希望将实际连接定义保存在 development.js 或 production.js 中,并将它们从 connections.js 中删除。这有点不直观。

    开发.js

    module.exports = {
      connections : {
        mongoDev: {
          adapter: 'sails-mongo',
          host: 'localhost',
          port: 27017,
          user: 'username',
          password: 'password',
          database: 'database'
        }
      },
      models: {
        connection: 'mongoDev'
      }    
    };
    

    生产.js

    module.exports = {
      connections : {
        mongoLive: {
          adapter: 'sails-mongo',
          host: 'host.mongolab.com',
          port: 31681,
          user: 'user',
          password: 'password',
          database: 'database'
        } 
      },
      models: {
         connection: 'mongoLive'
      },
      port: 3000,
    };
    

    【讨论】:

    • 这似乎对我不起作用。您知道为什么必须对环境设置进行此操作吗?有什么东西迫使它回到本地吗?
    • 这个答案有链接说明为什么这一个问题stackoverflow.com/questions/28658299/…
    猜你喜欢
    • 2018-11-11
    • 2023-03-08
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 2021-08-19
    • 2014-03-14
    • 2015-03-06
    • 2017-07-09
    相关资源
    最近更新 更多