您好我正在尝试使用Appfog绑定我的expressjs应用程序上的mongodb服务。
我有这样的配置文件:
config.js
var config = {}
config.dev = {};
config.prod = {};
//DEV
config.dev.host = "localhost";
config.dev.port = 3000;
config.dev.mdbhost = "localhost";
config.dev.mdbport = 27017;
config.dev.db = "detysi";
//PROD
config.prod.service_type = "mongo-1.8";
config.prod.json = process.env.VCAP_SERVICES ? JSON.parse(process.env.VCAP_SERVICES) : '';
config.prod.credentials = process.env.VCAP_SERVICES ? config.prod.json[config.prod.service_type][0]["credentials"] : null;
config.prod.mdbhost = config.prod.credentials["host"];
config.prod.mdbport = config.prod.credentials["port"];
config.prod.db = config.prod.credentials["db"];
config.prod.port = process.env.VCAP_APP_PORT || process.env.PORT;
module.exports = config;
这是我的mongodb conf取决于环境
app.js
if ( process.env.VCAP_SERVICES ) {
server = new Server(config.prod.mdbhost, config.prod.mdbport, { auto_reconnect: true });
db = new Db(config.prod.db, server);
} else {
server = new Server(config.dev.mdbhost, config.dev.mdbport, { auto_reconnect: true });
db = new Db(config.dev.db, server);
}
我从https://console.appfog.com手动绑定服务,我的应用程序使用的是基础设施AWS Virginia。我还使用MongoHQ插件创建一个包含两个文档的集合。
当我转到Windows控制台并写 af更新myapp 时,它会引发下一个错误:
无法读取未定义的属性“0”
这是因为process.env.VCAP_SERVICES未定义。
我正在调查这一点,可能是因为我的mongodb服务被错误地绑定了。
之后我尝试从windows控制台绑定mongodb服务,如下所示:
af bind-service mongodb myapp
但它引发了我的下一个错误:
服务mongodb和App myapp不在同一个基础上
此时我不知道我能做些什么。
答案 0 :(得分:0)
我遇到了同样的问题。
为我修好了什么:
转到:console> services>(重新)启动mongodb服务
再次运行相同的命令。
再次推。
它应该有用。