在 Sails.js 中处理数据库环境配置

Handling database environment configuration in Sails.js

本文关键字:数据库环境 配置 处理 Sails js      更新时间:2023-09-26

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

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

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

我的连接.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 对象,它可以工作。

我也尝试使用适配器.js,但这只导致了一些弃用错误。

$ sails -v
info: v0.9.9

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

info:    Sails         
info:    v0.10.5
您希望将

实际的连接定义保存在开发.js或生产中.js并将其从连接中删除.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,
};