记录上次登录节点的日志

时间:2016-10-29 20:59:53

标签: node.js express

我是节点新手。我想要实现的是向用户询问他的名字。当用户输入他的名字时,他的会话就会被创建。在用户登录时间后面保存。下次用户输入他的名字。应该显示他的名字加上他最后一次登录。我的尝试是这个

var express = require('express');
var bodyParser = require('body-parser'); 
var expressSession = require('express-session');
var cookieParser = require('cookie-parser'); 

var app = express();

app.use(cookieParser());

app.use(expressSession({secret:'somesecrettokenhere'}));

app.use(bodyParser());

app.all('*', function findLastVisit(req, res, next) {
  if (req.session.visited)
    req.lastVisit = req.session.visited;

    req.session.visited = Date.now();


  next();
});

app.get('/', function(req, res){
  var html = '<form action="/" method="post">' +
             'Your name: <input type="text" name="userName"><br>' +
             '<button type="submit">Submit</button>' +
             '</form>';
  if (req.session.userName) {
    html += '<br>Your username from your session is: ' + req.session.userName + '<br> And the last time you visited was ' + req.lastVisit;
  }
  res.send(html);
});

app.post('/', function(req, res){
  req.session.userName = req.body.userName;
  res.redirect('/');
});

app.listen(1337);
console.log("server is on 1337 bro");

不幸的是,我的代码始终仅显示当前时间。我想我犯了一个愚蠢的错误。有谁可以指出?

1 个答案:

答案 0 :(得分:0)

我会移除您的middelware并添加另一个名为lastVisited的变量,如下所示

var express = require('express');
var bodyParser = require('body-parser'); 
var expressSession = require('express-session');
var cookieParser = require('cookie-parser'); 

var app = express();

app.use(cookieParser());

app.use(expressSession({secret:'somesecrettokenhere'}));

app.use(bodyParser());

app.get('/', function(req, res){
  var html = '<form action="/" method="post">' +
             'Your name: <input type="text" name="userName"><br>' +
             '<button type="submit">Submit</button>' +
             '</form>';
  if (req.session.userName) {
    html += '<br>Your username from your session is: ' + req.session.userName + '<br> And the last time you visited was ' + req.session.lastVisited  ; //LOOK here I replaced your variable with lastVisited
  }
  res.send(html);
});

app.post('/', function(req, res){
  req.session.userName = req.body.userName;
  req.session.lastVisited = req.session.visited || Date.now(); //LOOK here
  req.session.visited = Date.now();
  res.redirect('/');
});

app.listen(1337);
console.log("server is on 1337 bro");