これはエクスプレスセッションストアを使用するための簡単な接続です。テキストが本から直接出ている場合でも、このエラーを繰り返し発生します。 '新しい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);
新しいMongoStore()
にURLを追加します
var sessionStore = new MongoStore({
Host: '127.0.0.1',
port: '27017',
db: 'session',
url: 'mongodb://localhost:27017/demo'
});
問題のコードは本からのものですBeginning Node.jsby Basarat ALi Syed。
セッションコレクションを使用しているので、次のようになります
app.use(expressSession({
store: new mongoStore({
mongooseConnection: mongoose.connection,
collection: 'session',
})
}));
connect-mongoモジュールに関してバージョン制限があり、この例は、ドキュメントにあるものとは異なるパラメーターのセットを示しています。
// Note: user, pass and port are optional
adapter: 'connect-mongo',
url: 'mongodb://user:pass@Host:port/database',
collection: 'sessions',
auto_reconnect: false,
ssl: false,
stringify: true
私は実際に使用する必要がありました:
// Note: user, pass and port are optional
adapter: 'connect-mongo',
url: 'mongodb://localhost:27017/sails',
collection: 'sessions'
それが役に立てば幸い!
データベース接続を定義してから、それを新しい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 });