如何让mongodb在appfog上工作? [英] How to get mongodb working on appfog?

查看:87
本文介绍了如何让mongodb在appfog上工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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的应用程序之一时,它不显示行,它只是在开始"处停止,什么也没有显示.

请帮助,非常感谢.

解决方案

您可以使用文档进行检查 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);

I'm new to nodeJS, so i was just trying couple of things starting from basics.

I had a problem while retrieving data from MongoDB, So here is the code:

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();
                });
            });
        });
    });
}

this works fine in my local, it displays the rows, but when i upload it to one of my appfog's app it does not display the rows, it just stops at "Start" and nothing else is displayed.

Please help, Thanks a lot in advance.

解决方案

You can check with the Document or the example on github. They provide with VCAP_SERVICES for every details you need to connect. so following (from the doc) will do all the magic.

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);

这篇关于如何让mongodb在appfog上工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆