11

これは、エクスプレスセッションストアを使用するための簡単な接続です。テキストが本から正しい場合でも、このエラーが発生し続けます。「新しいMongoStore」オブジェクトの初期化と関係があると確信しています。

var express = require('express'),
    expressSession = require('express-session');

var MongoStore = require('connect-mongo/es5')(expressSession);
var sessionStore = new MongoStore({
  host: '127.0.0.1',
  port: '27017',
  db: 'session'
});

var app = express()
    .use(expressSession({
      secret: 'my secret sign key',
      store: sessionStore
     }))
    .use('/home', function (req, res) {
      if (req.session.views) {
        req.session.views++;
      }
      else {
        req.session.views = 1;
      }
      res.end('Total views for you:' + req.session.views);
    })
    .use('/reset', function(req, res) {
      delete req.session.views;
      res.end('Cleared all your views');
    })
    .listen(3000);
4

4 に答える 4

13

URL を新規に追加MongoStore()

  var sessionStore = new MongoStore({
        host: '127.0.0.1',
        port: '27017',
        db: 'session',
        url: 'mongodb://localhost:27017/demo'
    });

問題のコードは、Basarat Ali Syed著Beginning Node.js という本からのものです。

于 2016-09-06T05:06:29.870 に答える
8

セッションコレクションを使用しているので、このようにする必要があります

    app.use(expressSession({
      store: new mongoStore({
          mongooseConnection: mongoose.connection,
          collection: 'session',
      })
   }));
于 2016-04-14T16:34:03.890 に答える
1

データベース接続を定義してから、それを新しい MongoStore に渡す必要があります。使用している「db:」パラメーターは、Mongo データベースへの URL ではなく、MongoDB ドライバーの接続を想定しています。そのためには、次のようにする必要があります。

var sessionStore = new MongoStore({ url:'mongodb://localhost:27017/test');

MongoDB ドライバーの代わりに Mongoose を使用していますが、動作することがわかっている例を次に示します。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection });
于 2016-02-08T20:14:32.040 に答える