【问题标题】:understand the connect-mongo usage, how to use connect-mongo for sessions了解 connect-mongo 的用法,如何使用 connect-mongo 进行会话
【发布时间】:2014-07-04 22:27:55
【问题描述】:

我在 node.js 应用程序中,我正在尝试将会话数据存储在 mongoDB 数据库中。

但是我不明白 connect-mongo 的用法,我想知道是否有人可以向我解释正确的用法以及我无法连接到我的 mongoDB 数据库的原因。

我的 app.js 代码是

var config = require('./config')
    , express = require('express')
    , passport = require('passport')
    , site = require('./site')
    , oauth2 = require('./oauth2')
    , user = require('./user')
    , client = require('./client')
    , token = require('./token')
    , https = require('https')
    , fs = require('fs')
    , path = require('path')
    , mongoose = require('mongoose')
    , MongoStore = require('connect-mongo')(express);

var sessionStorage;

    var MongoStore = require('connect-mongo')(express);
    console.log('Using MongoDB for the Session');
    sessionStorage = new MongoStore({
        db: config.session.dbName
    });

var app = express();
app.set('view engine', 'ejs');
app.use(express.logger());
app.use(express.cookieParser());
app.use(express.urlencoded());
app.use(express.json());


//Session Configuration
app.use(express.session({
    secret: config.session.secret,
    store: sessionStorage,
    key: "authorization.sid",
    cookie: {maxAge: config.session.maxAge }
}));

app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(function(err, req, res, next) {
    if(err) {
        res.status(err.status);
        res.json(err);
    } else {
        next();
    }
});
require('./auth')(passport); 

app.get('/', site.index);
app.get('/login', site.loginForm);
app.post('/login', site.login);
app.get('/logout', site.logout);
app.get('/account', site.account);

app.get('/dialog/authorize', oauth2.authorization);
app.post('/dialog/authorize/decision', oauth2.decision);
app.post('/oauth/token', oauth2.token);

app.get('/api/userinfo', user.info);
app.get('/api/clientinfo', client.info);

app.get('/api/tokeninfo', token.info);

app.use(express.static(path.join(__dirname, 'public')));

mongoose.connect('mongodb://user:pass@host:10026/dbName');

var db = mongoose.connection;

db.on('error',console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
    console.log("Connected to db");
});

mongoose.set('debug', true);

var options = {
    key: fs.readFileSync('certs/privatekey.pem'),
    cert: fs.readFileSync('certs/certificate.pem')
};

https.createServer(options, app).listen(3000);
console.log("Authorization Server started on port 3000");

输出错误是

authorization-server\node_modules\connect-mongo\lib\connect-mongo.js:155
          throw new Error('Error connecting to database <' + err + '>');
                ^
Error: Error connecting to database <Error: failed to connect to [127.0.0.1:27017]>

【问题讨论】:

    标签: node.js express mongoose node-mongodb-native


    【解决方案1】:

    在您的错误消息中请注意,mongoose 正在尝试使用默认端口连接到 localhost。您还需要在文件顶部定义数据库连接。

    变化:

    mongoose.connect('mongodb://user:pass@host:10026/dbName');
    

    收件人:

    mongoose.connect('mongodb://localhost/dbName');
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2014-04-05
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多