我很难在Appfog上获得与MongoDB的任何连接以进行会话存储工作。我目前正在使用PassportJS和Mongoose运行Node Express。我在网上跟踪了很多例子和教程,并尝试了一些ODM映射器。
我必须承认,我一直在努力寻求任何形式的联系,抽象的会议工作正在发挥作用。
我已经尝试了SO示例here和here但没有成功。每次我尝试连接以下代码时: -
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)
任何人都可以提供任何可能的指示或帮助让这个工作吗?
请询问您是否需要在此处进一步转储代码以帮助解决方案。
帮助表示赞赏。
答案 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实例,并没有任何连接问题。