web-dev-qa-db-ja.com

エラー:接続戦略が見つかりませんMongoDB

これはエクスプレスセッションストアを使用するための簡単な接続です。テキストが本から直接出ている場合でも、このエラーを繰り返し発生します。 '新しい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);
11
Spencer Hire

新しい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

12
alturium

セッションコレクションを使用しているので、次のようになります

    app.use(expressSession({
      store: new mongoStore({
          mongooseConnection: mongoose.connection,
          collection: 'session',
      })
   }));
7
Arman Ortega

http://sailsjs.com/documentation/reference/configuration/sails-config)のセクション他の接続互換セッションストアの使用を確認してください-セッション

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'

それが役に立てば幸い!

1
Davo

データベース接続を定義してから、それを新しい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 });
1
Matthew Charles