我开始使用 appfog 服务来托管节点应用程序。我在我的应用程序中尝试使用 mongodb 时遇到了麻烦。在您的教程中:https ://docs.appfog.com/services/mongodb#walkthrough它是为连接 mongodb 而编写的,如下所示:
require('mongodb').connect(mongourl, ...
而 mogourl 是generate_mongo_url
函数生成的 url。问题是我使用的是较新的 api(我认为),我无法将 url 传递给 open 方法。这就是我使用 mongodb 的方式:
var mongoClient = new MongoClient(new Server('localhost', 27017));
mongoClient.open(function(err, mongoClient) { ...
我在哪里以及如何使用生成的 mongourl?如何传递在 generate_mongo_url 函数中使用的凭据和 mongo 变量?
更新
根据@mjhm 的建议,这是我的开放函数:
var mongoService = null;
if(process.env.VCAP_SERVICES){
var env = JSON.parse(process.env.VCAP_SERVICES);
mongoService = env["mongodb-1.8"][0]["credentials"];
} else {
mongoService = {
"hostname": "localhost",
"port": 27017,
"isLocal": true,
"username": "",
"password": "",
"name": ""
};
}
this.mongoClient.open(function(err, mongoClient) {
if (!err) {
console.log("Open DB Success");
var db = mongoClient.db(DB_NAME);
if (!mongoService.isLocal) {
db.authenticate(mongoService.username,
mongoService.password, function (err, result) {
if (!err) {
console.log("Authenticate DB Success");
doAction();
} else {
console.log("Authenticate DB Error: " + err);
}
});
} else {
doAction();
}
} else {
console.log("Open DB Error: " + err);
}
});
当我在 appfog 上运行此代码时,我等待了很多时间(超过 20 秒),然后我得到:
$ curl myappname.eu01.aws.af.cm/list
curl: (52) Empty reply from server
知道有什么问题吗?