0

これらの設定を使用して、両方とも appfog.com でホストされている node.js サーバーを使用してデータベースに接続しようとしています。

var client = mysql.createConnection({
   host: 'mysql-node01.eu-west-1.aws.af.cm',
   user: '****@gmail.com',
   password: '*******',
   database: 'd2dc10d6a450048b587114fa9b11756ed',
   port: 3306
});

ホスト、データベース、およびおそらくポートが間違っていることは確かですが、使用する値がわかりません。つまり、localhost を使用する必要がありますか?

4

1 に答える 1

1

VCAP_SERVICES 環境変数からの db 資格情報を使用し、それらをハードコーディングしないでください。AppFog でアプリを起動すると、資格情報が提供されます。Appfog ノードのドキュメントを参照してください

var env = JSON.parse(process.env.VCAP_SERVICES);
var creds = env['mysql-5.1'][0]['credentials']; # grabs the creds for the first mysql database

var client = mysql.createConnection({
   host: creds.hostname || 'localhost',
   user: creds.username,
   password: creds.password,
   database: creds.name,
   port: creds.port || 3306
});

実稼働および開発資格情報の取得を容易にするために、npm パッケージを作成しました。AppFog 環境を参照してください

それの使い方:

まず、ローカル dev データベースの資格情報を使用してローカル環境変数を設定します。

export DEV_DB_CREDS='{ "username": "root", "name": "dev-db-name" }'

次に、アプリで資格情報を取得します。

var service = appfog.getService('mysql-db-name', process.env.DEV_DB_CREDS)
var creds = service.credentials

この方法により、同じコードをローカルでも本番環境でも機能させることができます。

于 2013-07-02T19:58:56.183 に答える