0

嗨,我正在尝试将我的 expressjs 应用程序上的 mongodb 服务与 Appfog 绑定。

我有一个这样的配置文件:

配置.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,具体取决于环境

应用程序.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 update myapp时,它会抛出下一个错误:

无法读取未定义的属性“0”

这是因为 process.env.VCAP_SERVICES 未定义。

我正在对此进行调查,可能是我的 mongodb 服务绑定错误。

之后,我尝试从 Windows 控制台绑定 mongodb 服务,如下所示:

af bind-service mongodb myapp 

但它给我带来了下一个错误:

服务 mongodb 和 App myapp 不在同一个基础设施上

在这一点上,我不知道我能做什么。

4

1 回答 1

0

我有同样的问题。

什么为我解决了它:

转到:控制台>服务>(重新)启动mongodb服务

再次运行相同的命令。

再推。

它应该工作。

于 2014-02-16T11:36:31.833 回答