0

js 与 express.js 应用程序,我将它部署到 appfog 但我无法或者我不知道如何将位于 MongoHQ 上的 mongodb 集合连接到我的 AppFog mongodb 服务。

MongoHQ 为您提供了一个 mongo URI,例如:

mongodb://<user>:<password>@<hostname>:<port>/<databasename>

AppFog mongodb 服务为您提供了一个名为 VCAP_SERVICE 的环境变量,其中包含将您的应用程序连接到 mongodb 的所有 conf 变量,但另一方面,我的 mongodb 集合位于 MongoHQ 上,我不知道如何将这个 MongoURI 指定给我的 mongodb 服务在 AppFog 上。

希望你能理解我,问候。

4

1 回答 1

1

如果我理解正确,可能有两种方法可以解决您的问题。首先,您可以启用 MongoHQ 插件,AppFog 将为您创建一个 MongoHQ 沙箱。您可以通过以下方式获取 MongoHQ URL:

if(process.env.VCAP_SERVICES){
    var env = JSON.parse(process.env.VCAP_SERVICES);
    var mongo = env['MONGOHQ_URL'];
}

既然您说您已经拥有 mongodb 集合,您可以通过 MongoHQ Web UI 将您的原始集合克隆到 AppFog 提供的集合。

另一个解决方案是不用担心 AppFog 中的 MongoHQ 插件。只需直接连接到 MongoHQ(我使用的是 mongoose,但本地驱动程序应该做类似的事情):

mongoose.connect(YOUR_MONGOHQ_URL);

实际上我最近遇到了类似的问题,我使用这种方法成功地将我的 nodejs+express 应用程序部署到 Heroku。我没有在 Heroku 中启用 mongohq 插件,因为我已经有了一个 MongoDB 沙箱。

更新 我最近在 Heroku 中部署了几个应用程序,使用 mongodb 本地驱动程序和僧侣连接到 MongoHQ 中的沙箱。代码如下所示:

var monk=require('monk');
var db=monk("mongodb://username:pwd@sth.mongohq.com:port/YOURDB");
于 2013-09-10T23:50:14.343 回答