NodeJS,ExpressJS& Cloud9上的PassportJS会话连接到Appfog Mongo

时间:2013-04-01 17:52:16

标签: mongodb express mongoose

我很难在Appfog上获得与MongoDB的任何连接以进行会话存储工作。我目前正在使用PassportJS和Mongoose运行Node Express。我在网上跟踪了很多例子和教程,并尝试了一些ODM映射器。

我必须承认,我一直在努力寻求任何形式的联系,抽象的会议工作正在发挥作用。

我已经尝试了SO示例herehere但没有成功。每次我尝试连接以下代码时: -

var env = process.env.NODE_ENV || 'development',
    config = require('./config/config')[env],
    auth = require('./config/middlewares/authorization'),
    mongoose = require('mongoose');

// Bootstrap db connection
mongoose.connect(config.db);

我得到了: -

Error: Error setting TTL index on collection : sessions
    at module.exports._get_collection (/var/lib/stickshift/514a22705973cafc85000110/app-root/data/447240/node_modules/connect-mongo/lib/connect-mongo.js:137:23)
    at Db.ensureIndex (/var/lib/stickshift/514a22705973cafc85000110/app-root/data/447240/node_modules/mongodb/lib/mongodb/db.js:1227:28)
    at Db.indexInformation (/var/lib/stickshift/514a22705973cafc85000110/app-root/data/447240/node_modules/mongodb/lib/mongodb/db.js:1371:30)

任何人都可以提供任何可能的指示或帮助让这个工作吗?

请询问您是否需要在此处进一步转储代码以帮助解决方案。

帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,因为我使用部分连接的数据库来初始化express.session()。

这是我最初的原因:

mongoose.connect(dbPath);
...
app.configure(function() {
  ...
  app.use(express.session({
    secret : secret,
    store: new MongoStore({ db: mongoose.connection.db })
  }));
  ...
});

'新MongoStore()'调用在mongoose.connect()完成之前发生,因此它使用尚未连接的数据库为'sessions'设置TTL并失败。我切换到“新的MongoStore({url:dbPath})”并解决了这个问题,但可能导致2个不同的数据库连接。

答案 1 :(得分:0)

我遇到了同样的错误,通过使用this问题中的代码来获取更多错误信息;它帮助我意识到问题确实是我在连接字符串中的用户ID和密码。

答案 2 :(得分:-1)

我无法与AppFog建立连接。不幸的是,AppFog本身也没有帮助。因此,我创建了一个MongoHQ实例,并没有任何连接问题。