如何设置mongoose和connect-mongo?

时间:2014-02-12 19:33:44

标签: node.js mongodb express mongoose connect

express启动应用程序时出现Error setting TTL错误。也许问题是因为我通过不同的连接使用会话和数据库操作相同的数据库。

因此,如果我想通过connect-mongo中间件将我的会话存储在mongodb中并使用mongo作为我的数据库,那么需要尊重需要mongooseconnect-mongo的特定序列对于我的应用程序特定数据?

目前我的应用程序如下所示:

App.app.use(express.session({
store: new MongoStore({
    db: settings.cookie.db,
    host: settings.cookie.host,
    port: settings.cookie.port
}),
    secret: settings.cookie.secret
}))

后来我开始为mongo启动连接:

 function connect(connectionString) {
     mongoose.connect(connectionString)

     var db = mongoose.connection
     db.on('error', console.error.bind(console, 'connection error'))
     db.once('open', function callbck() {
        console.log('Mongoose connected at: ', connectionString)
       })
     } 

没有错误日志分开

另外,当我关闭应用程序时,如何正确地拆除mongo连接(从命令行开始说)?对于这个问题,我发现答案是here

1 个答案:

答案 0 :(得分:3)

首先,我创建了一个sessionStore模块

var mongoose = require('mongoose'),
express = require('express'),
MongoStore = require('connect-mongo')(express),
sessionStore = new MongoStore({mongoose_connection: mongoose.connection});
module.exports = sessionStore;

然后我把它加入了应用

sessionStore = require('libs/sessionStore');

最后

app.use(express.session({
  secret: config.get('session:secret'),
  key: config.get('session:key'),
  cookie: config.get('session:cookie'),
  store: sessionStore
}));

那是配置

"session": {
    "secret": "secret",
    "key": "connect.sid",
    "cookie": {
        "path": "/",
        "httpOnly": true,
        "maxAge": null
    }
},