使用Mongodb存储express-session
最初
由于本次文章并没有进行实质性的调查核实,所以其中很多内容都是猜测。如果有些人过于在意,以至于夜晚都无法入眠,我希望您能在评论前添加前缀“这不是在开玩笑吗!”来发表您的意见。
连接MongoDB
如果想参考日语文章来使用这个模块并不起作用,那是因为它可能已经更新了版本。因此,我将根据官方页面做一些简要的笔记。我不会做解释,实际上我也做不到。(我还在学中)
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
⇓⇓⇓
var session = require('express-session');
var MongoStore = require('connect-mongo');
如果尝试像上面那样进行require,
TypeError: Class constructor MongoStore cannot be invoked without 'new' at Object.<anonymous>
出现了一个错误,不太明白,所以我打开官方网页看了一下,下面写得很清楚了。虽然我不太懂,但无所谓了!可能是版本不一致之类的吧。
var options = {
db:'example',
host:'localhost',
port:27017,
...
etc
...
clear_interval: 60 * 60
}
⇓⇓⇓
var options = {
mongoUrl: 'mongodb://username:password@localhost:27017/database',
autoRemove: 'native'
};
分けるか分けないかは個人の自由ですが、私は分ける派なので、分けました。
このoptionsにはhostやdbやportなどがあったのかな? そうですが、mongoUrlに統一されましたね。mongoモジュールを使用する際も、完全に同じURLでアクセスできるようです。
app.use(session({
secret:'foo',
store: new MongoStore(options)
}));
⇓⇓⇓
app.use(session({
secret: 'foo',
store:MongoStore.create(options)
}));
这是session的内容。看起来是用new MongoStore(options)创建的,但我试了一下却没成功,所以查看了官方页面,发现可以用MongoStore.create(options)。真是变化多端啊。希望不要改变(因为找不到容易参考的文档了)。
最终
所以,虽然只是最基本的设置,但没有发生错误。然而,会出现警告。但是对于你们这样优秀的程序员来说,解决一两个警告非常简单!所以就到这里吧。虽然希望能在一些困扰的人的帮助上起到一点作用。