mongodb 如何设置Mongoose和connect-mongo?

c3frrgcw  于 2023-05-28  发布在  Go
关注(0)|答案(1)|浏览(153)

我在Express中启动应用程序时出现Error setting TTL错误。也许问题是因为我通过不同的连接使用相同的数据库进行会话和数据库操作。
那么,如果我想通过connect-mongo中间件将我的会话存储在MongoDB中,并使用Mongo作为我的应用程序特定数据的数据库,是否需要遵守connect-mongomongoose的特定顺序?
目前我的app看起来是这样的:

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设置了start连接:

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

yk9xbfzb

yk9xbfzb1#

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

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

然后我已经把它包含到app里了

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
    }
},

相关问题