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

我很确定主机、数据库和端口可能不正确,但我不知道要使用哪些值,即我应该使用本地主机吗?

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 环境

如何使用它:

首先使用本地开发数据库凭据设置本地环境变量:

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 回答