7

我遇到的问题与官方文档中的以下引用有关:

注意 如果模型使用到适配器的任何连接,那么到该适配器的所有连接都将加载到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'
  }   
};

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

开发.js

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

生产.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
4

1 回答 1

12

您希望将实际连接定义保存在 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,
};
于 2015-01-22T02:33:13.503 回答