2013-04-01 64 views
4

我很難在Appfog上獲取任何到MongoDB的連接以進行會話存儲工作。我目前使用PassportJS和Mongoose運行Node Express。我在網上跟隨了大量的例子和教程,並嘗試了一些ODM映射器。Cloud9上的NodeJS,ExpressJS和PassportJS會話連接到Appfog Mongo

我必須承認,我一直在努力獲得任何形式的連接,更不用說,抽象會議的東西工作。

我試過這個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) 

任何人都可以提供任何可能的方向或幫助得到這個工作嗎?

請問你是否需要進一步轉儲代碼來幫助解決方案。

幫助讚賞。

+0

我有完全相同的問題... – kumikoda

回答

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(之前發生)完成,因此使用尚未連接數據庫設置'會話'的TTL失敗。我切換到「新的MongoStore({url:dbPath})」,並解決了這個問題,但可能會導致2個不同的數據庫連接。

-1

我無法連接到AppFog來工作。不幸的是,AppFog本身也沒有幫助。因此,我創建了一個MongoHQ實例,完全沒有問題。

+0

這不是一個真正的答案。 – chovy

+0

我已將它更改爲@ Shovy,因爲這似乎更有幫助。 – dooburt

0

我得到了同樣的錯誤,通過使用this問題中的代碼來獲得更多的錯誤信息,它幫助我意識到問題真的是我的用戶ID和連接字符串中的密碼。