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

production.js

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

運用データベース サーバーは外部サーバー上にあるため、これはローカル マシンで機能します。本番環境では、次のエラーが発生します。

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

接続オブジェクトから mongoDev オブジェクトを削除すると機能します。

また、adaptors.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'
  }    
};

production.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 に答える