我是nodeJS的新手,所以我只是从基础开始尝试了几件事。
从MongoDB检索数据时遇到问题,所以代码如下:
var port = (process.env.VMC_APP_PORT || 3000);
var host = (process.env.VCAP_APP_HOST || 'localhost');
var http = require('http');
var mongo = require('mongodb');
http.createServer(function (req, res) {
var mongoUrl = "mongodb://<userid>:<password>@linus.mongohq.com:10090/<db>";
if (process.env.VCAP_SERVICES) {
mongoUrl = process.env.MONGOHQ_URL;
}
selectTable(req, res, mongoUrl);
}).listen(port, host);
var selectTable = function (req, res, mongoUrl) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.write("Start\n");
mongo.connect(mongoUrl, function (err, conn) {
conn.collection('Test', function (err, coll) {
coll.find({}, {}, function (err, cursor) {
cursor.toArray(function (err, items) {
for (i = 0; i < items.length; i++) {
res.write(JSON.stringify(items[i]) + "\n");
}
res.end();
});
});
});
});
}
这在我的本地工作正常,它显示行,但当我将其上传到我的appfog的应用程序之一时,它不显示行,它只是停在“开始”,没有显示任何其他内容。
请提供帮助,非常感谢。
答案 0 :(得分:0)
您可以查看Document或github上的示例。 它们为您需要连接的每个细节提供 VCAP_SERVICES 。 所以跟随(从文档)将做所有的魔术。
if(process.env.VCAP_SERVICES){
var env = JSON.parse(process.env.VCAP_SERVICES);
var mongo = env['mongodb-1.8'][0]['credentials'];
}
else{
var mongo = {
"hostname":"localhost",
"port":27017,
"username":"",
"password":"",
"name":"",
"db":"db"
}
}
var generate_mongo_url = function(obj){
obj.hostname = (obj.hostname || 'localhost');
obj.port = (obj.port || 27017);
obj.db = (obj.db || 'test');
if(obj.username && obj.password){
return "mongodb://" + obj.username + ":" + obj.password + "@" + obj.hostname + ":" + obj.port + "/" + obj.db;
}
else{
return "mongodb://" + obj.hostname + ":" + obj.port + "/" + obj.db;
}
}
var mongourl = generate_mongo_url(mongo);