求助,AppFog上如何使用mongoHQ
发布于 2年前 作者 thesadboy 1404 次浏览

求助哦,我将应用部署到AppFog上面,但是无法使用mongoHQ,有用过的麻烦帮忙提供一下使用的方法,不胜感激。

28 回复

自己去mongohq申请帐号,然后把db的url换成mongohq提供的db url就ok~

我也是那样的,在本地完全能够运行,但是一部署到AppFlog就报错链接数据库失败。

求大神,求回复啊

appfog 不能绑定域名了把,我已经换到heroku + mongohq~ 运行得好好~

heroku使用mongohq的add-on需要绑定信用卡?

@thesadboy 直接去mongohq申请就行了,不用heroku 的add-on

@xieren58 试试,呵呵,谢啦

@xieren58 hello,问一下哦,为什么我在heroku上面使用generic-pool用做mongodb的连接池管理会报错说数据库连接失败?

@thesadboy 我没用,不知道咋回事~ 至于mongodb驱动,我用了mongojs~

找到问题了,不是连接池的问题,是我用MongoStore存储了session的问题。。。。

MongoStore存储session的问题有遇到过么?

@thesadboy 没有~运行得好好~

我用的MySql,这么整的代码,一次通过,而且以后改应用、改数据库都不用改代码。供参考(我想mongoHQ应该一样的):

//mysql.js

var env=JSON.parse(process.env.VCAP_SERVICES); var db=env[‘mysql-5.1’][0][‘credentials’]; //数据连接参数

var mysql=require(‘mysql’).createPool( { host:db.hostname , port:db.port ,user:db.username ,password:db.password ,database:env[‘mysql-5.1’][0][‘name’] //数据库名称 } );

module.exports=function(cb){ mysql.getConnection(function(err,connection){ cb(err,connection); }) ; };

module.exports = poolModule.Pool({
  name: 'with-you-blog-mongo-db',
    create: function(callback) {
        MongoClient.connect(options.database.url, {
            server:{poolSize:options.database.server_option.poolSize,auto_reconnect:options.database.server_option.auto_reconnect},
            db:{w:0}
        }, function(err, db) {
            callback(err,db);
        });
    },
    destroy: function() {},
    idleTimeoutMillis: 30000,
    max:50,
    min:5,
    log: false
});

我的是配置的,这个能用了,但是我的MongoStore存储session出问题了,呵呵

@xieren58 你的mongostore存储session是怎么写的啊?

如果只有几百几千号用户-比如企业应用,session放内存里也许编程更简单,性能更高…

@thesadboy 我没用pool, 代码如下


app.use(express.session({
  secret: CONFIG.cookieSecret,
  cookie: { maxAge: 20 * 60 * 1000 },
  store: new MongoStore({
    url: dbUrl
  })
}));

@xieren58 我的是这样写的

app.use(express.session({
  secret : options.database.cookieSecret,
    store : new MongoStore({
        db : options.database.db
    })
}));

然后放到heroku和appfog都报错,然后我就直接改为了

app.use(express.session({
  secret : options.database.cookieSecret
    })
);
```
去掉了MongoStore就好了。。。。。。

如果是分布式的话就不行了吧,我现在就是直接放内存了

@thesadboy 你的我看了下,直接给url好了~~给db 可能会出问题~

@xieren58 OK,我试一下,呵呵,谢啦

@xieren58 我试着像你这样写的,但是很多时候会报错mongo链接无权限……

@thesadboy 你是不是本地用了mongohq?本地的话,你要上vpn~这样才容易连上mongohq~

@xieren58 本地和heroku上都这样

@thesadboy 你mongohq那边有没设置好db帐号和密码?

@xieren58 有的哦,在mongoURL中就已经将账号和密码包含进去了。

@thesadboy 我这边用得好好的,实在不知道你那边是怎么设置~

@xieren58 呵呵,我再看看吧,谢啦

回到顶部