4

我很难在 Appfog 上与 MongoDB 建立任何类型的连接以进行会话存储。我目前正在使用 PassportJS 和 Mongoose 运行 Node Express。我已经在线学习了许多示例和教程,并尝试了一些 ODM 映射器。

我必须承认,我一直在努力获得任何形式的联系,更不用说抽象的会话工作了。

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

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)

任何人都可以提供任何可能的方向或帮助来完成这项工作吗?

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

帮助表示赞赏。

4

3 回答 3

1

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

这是我最初的:

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

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

于 2013-04-09T23:56:22.743 回答
0

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

于 2013-09-01T02:09:47.960 回答
-1

我无法连接到 AppFog 工作。不幸的是,AppFog 本身也无济于事。因此,我启动了一个 MongoHQ 实例,并且完全没有连接问题。

于 2013-04-24T07:16:29.293 回答