2016-10-29 18 views
0

私はノードを使い慣れていません。私が実装しようとしているのは、ユーザーに彼の名前を尋ねることです。ユーザーが自分の名前を入力すると、セッションが作成されます。ユーザーのログインの後ろには保存されます。次回はユーザーが自分の名前を入力します。彼の名前と最後にログインした時間を表示する必要があります。私の試みはこれでしたログイン前回ログにログイン

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

残念ながら、私のコードは常に現在の時刻のみを表示します。私は愚かな間違いをしていると思います。誰も指摘できますか?

+0

以下のようにlastVisitedと呼ばれる別の変数を追加し、最初の文は、IFブロック内で実行されます。 – Marcs

+0

if文の下に最初のようなものが必要な場合は、中括弧を無視することができます。他の行はif文に含まれてはならない別のコードです – shashank

+0

この場合、読みやすいようにコードを書式化することをお勧めします。正しく書式設定されたコードは読みやすくなります。 – Marcs

答えて

0

私はあなたのmiddelwareを削除し、あなたが `(req.session.visited)場合は`の中括弧が欠落している

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"); 
関連する問題