【问题标题】:Can't save mongo objectId to session with expressjs无法将 mongo objectId 保存到与 expressjs 的会话
【发布时间】:2013-09-18 01:05:15
【问题描述】:

我目前正在学习将 express 与 node 和 mongo 一起使用,并且正在努力创建用户 ID 并将其保存到会话中。这是我的代码:

var express = require('express');
var app = express();
app.use(express.cookieParser('mysecret'));
app.use(express.session());

var port = 3000;

var databaseUrl = 'chat';
var collections = ["users", "messages"];
var db = require('mongojs').connect(databaseUrl, collections);
var users = db.collection('users');

app.set('views', __dirname + '/templates');
app.set('view engine', "jade");
app.engine('jade', require('jade').__express);

app.get("/", function(req, res){
    console.log(req.session.userId);//always undefined
    if (req.session.userId){
        userId = req.session.userId;
        console.log('has userid in session');//never appears
        console.log(userId);
    }else{
        users.insert({ip: req.ip}, function(err, docs){
            if (err) return;
            userId = docs[0]._id;
            req.session.userId = userId;
            console.log(req.session.userId);//always shows the new generated id
        });
    }

    res.render("page");
});

app.get('/test', function(req, res){
    if (req.session.userId){
        console.log(req.session.userId);
    }else{
        req.session.userId = 'asdfmi34qoprjifd';
    }
    res.send('Saved a value to req.session.userId');
});

我的意图是,如果您访问“/”,将在 Mongo 中创建一个用户记录(目前只有您的 IP 地址),并将 ID 保存到会话中。这似乎无法正常工作。

每次访问“/”时,都会在数据库中创建一条新记录。第一次调用console.log(req.session.userId) 总是显示“未定义”。

奇怪的是,如果你访问“/test”,它保存的值很好,然后你可以回到“/”,它会显示它保存在“/test”的值。

任何指针,RTFM 的邀请(带有 FM 的链接),非常欢迎 :)。已经检查了 github 上使用会话的快速示例,但我仍然不知道。

【问题讨论】:

  • 我认为你应该将秘密传递给 .session() 的调用,而不是 .cookieParser()。看看是不是这个问题。
  • 谢谢 - 这不是问题,会话正在工作,因为我可以保存到“/test”路由中的会话,而不是“/”路由。

标签: node.js mongodb session express


【解决方案1】:

http://expressjs.com/api.html#cookieSession你需要

app.use(express.cookieSession());not express.session()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2017-12-03
    • 2017-02-25
    • 2012-03-12
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多