2016-01-16 17 views
5

đây là kết nối đơn giản để sử dụng cửa hàng phiên nhanh, nó tiếp tục đập ra lỗi này mặc dù văn bản nằm ngay trong sách. Tôi khá chắc chắn là có một cái gì đó để làm với 'mới MongoStore' đối tượng khởi tạo.Lỗi: Không tìm thấy chiến lược kết nối MongoDB

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); 

Trả lời

0

Bạn cần xác định kết nối cơ sở dữ liệu và sau đó chuyển nó đến MongoStore mới. Tham số 'db:' bạn đang sử dụng đang mong đợi một trình điều khiển MongoDB kết nối, không phải là một url đến một Cơ sở dữ liệu Mongo. Để làm được điều đó, bạn nên làm như sau:

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

Đây là ví dụ tôi biết, mặc dù nó sử dụng Mongoose thay cho trình điều khiển MongoDB.

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/test'); 
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection }); 
2

Vì bạn đang sử dụng một bộ sưu tập phiên vì thế nó nên được như thế

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

Add URL này để mới MongoStore()

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

Các mã trong câu hỏi là từ cuốn sách Bắt đầu Node.jsbởi Basarat Ali Syed.

+0

Dường như dòng 'db: 'session'' không có tác động. Tôi nhận xét dòng này và chỉ cần thêm 'url' tùy chọn như đã nói @alturium và nó làm việc vẫn còn. Trên thực tế nó tạo ra một bộ sưu tập với tên 'phiên' bên trong cơ sở dữ liệu' demo'. –

1

Kiểm tra phần Sử dụng các cửa hàng phiên tương thích với kết nối khác trong http://sailsjs.com/documentation/reference/configuration/sails-config-session.

Có những hạn chế phiên bản coi connect-Mongo mô-đun và ví dụ cho thấy một bộ tham số khác nhau hơn so với những người trong tài liệu:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://user:[email protected]:port/database', 
    collection: 'sessions', 
    auto_reconnect: false, 
    ssl: false, 
    stringify: true 

tôi thực sự chỉ phải sử dụng:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://localhost:27017/sails', 
    collection: 'sessions' 

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan