使用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)。真是变化多端啊。希望不要改变(因为找不到容易参考的文档了)。

最终

所以,虽然只是最基本的设置,但没有发生错误。然而,会出现警告。但是对于你们这样优秀的程序员来说,解决一两个警告非常简单!所以就到这里吧。虽然希望能在一些困扰的人的帮助上起到一点作用。

bannerAds