0

MongoDB の上で Mongoose を使用する MeanJS を試しています。私のプロジェクトのニーズを考えると、Monk を使用したいと思います。セッション ストアの背後にある魔法を理解するのに苦労しています。

var MongoStore = require('connect-mongo')(express);
var db = mongoose.connect("localhost:...", function(err){});

app.use(session({
    secret: 'foo',
    store: new MongoStore({db: db.connection.db})
}));

他のモジュールがアクセスできるように、Monk を使用してアプリにセッションを保存するにはどうすればよいですか?

4

1 に答える 1

1

Monk を他の mongoDB 動作に使用し、引き続き connect-mongo を使用してセッションを保存できます。

Express 3.x (コードに基づいて使用しているようです):

var MongoStore = require('connect-mongo')(express),

app.use(session({
    secret: 'foo',
    store: new MongoStore({url: 'mongodb://localhost:27017/test'})
}));

この場合、MongoStore はネイティブ ドライバーの接続文字列を使用してデータベースへの新しい接続を作成しているため、Monk は実際には使用されていません。公式の mongo ドライバーや Monk を必要とせずにこれをテストしました。

mongod インスタンスを実行する必要があるだけです (この場合、デフォルトのポート 27017 で)。

このメソッドはconnect-mongo readmeで参照できます

express-sessionExpress 4.x (私が使用) の場合、コードは似ていますが、express にパッケージ化されなくなったため、モジュールを個別にインストールして必要とする必要があります。また、以下に示すように、express-session の最新バージョンで明示的に指定する必要がある 2 つのオプションがあります。

var session = require('express-session'),
    MongoStore = require('connect-mongo')(session);

app.use(session({
    secret: 'foo',
    saveUninitialized: false,
    resave: false,
    store: new MongoStore({url: 'mongodb://localhost:27017/test'})
}));
于 2015-05-13T23:38:16.287 に答える