2016-06-19 9 views
0

したがって、データベースとのインタフェース後にユーザーをログインするNode.js Webアプリケーションを作成しています。私はエクスプレスjsを使用しており、アプリケーションとデータベースの部分に退屈です。データベースとのインターフェースが完璧で、セッション変数を設定することができますが、ユーザーをリダイレクトできません。私のWebアプリケーションは、ログインした後にリロードする予定の1ページのアプリケーションですが、これは起こっていません。私はテンプレートエンジンとしてejsを使用しています。ログインボタンをクリックすると何も起こらず、アドレスバーにhttp://localhost:1337/と表示されますか? http://localhost:1337/の代わりに。どんな助けでも大歓迎です!ありがとうございました!Node.jsのログイン後にブラウザをリダイレクトすることができません

app.js - のみサブパート

.... 
var express = require('express'); 
var cookieParser = require('cookie-parser'); 
var routes = require('./routes/index'); 
var login = require('./routes/login.js'); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 
app.use('/', routes); 
app.use('/login', login); 
.... 

login.js - 完全なファイル

var express = require('express'); 
var router = express.Router(); 
/* Make a user login */ 
router.post('/', function (req, res) { 
    var Connection = require('tedious').Connection; 
    var config = { 
     /* configuration options */ 
    }; 
    var connection = new Connection(config); 
    connection.on('connect', function (err) { 
     // If no error, then good to proceed. 
     if (err) { 
      console.log(err); 
     } 
     executeStatement(); 
    }); 
    var Request = require('tedious').Request; 
    var TYPES = require('tedious').TYPES; 
    function executeStatement() { 
     sql = "SELECT * from Table WHERE Email = '" + req.body.email + "' and password= '" + req.body.password + "';"; 
     console.log(sql); 
     request = new Request(sql, function (err , rowCount) { 
      if (err) { 
       console.log(err); 
      } 
     }); 
     request.on('row', function (columns) { 
      columns.forEach(function (column) { 
       console.log(column.metadata.colName + ":" + column.value) 
       if (column.metadata.colName == "Email") { 
        req.session.email = column.value; 
        console.log(req.session.email); 
       } 
       else if (column.metadata.colName == "Name") { 
        req.session.name = column.value; 
        console.log(req.session.name); 
       } 
       else if (column.metadata.colName == "phoneNumber") { 
        req.session.phonenumber = column.value; 
        console.log(req.session.phonenumber); 
       } 
       else if (column.metadata.colName == "Address1") { 
        req.session.address1 = column.value; 
        console.log(req.session.address1); 
       } 
       else if (column.metadata.colName == "Address2") { 
        req.session.address2 = column.value; 
        console.log(req.session.address2); 
       } 
       else { 
        //Do Nothing - Just placeholder 
       } 
      }); 
     }); 
     request.on('doneProc' , function (rowCount, more, returnStatus, rows) { 
      if (rowCount == 1) { 
       res.redirect('/');//This doesnt redirect! 
      } 
      else { 
       res.send("Loging Unsuccesful!"); 
      } 
     }); 
     connection.execSql(request); 
    } 
}); 

module.exports = router; 

index.ejs - 完全なファイル私が見つけた

<html> 
<head> 
    <title>Test</title> 
</head> 
<body> 
    <% if(loggedin == 'true') {%> 
     You are logged in! <br> 
     Your details are: 
     <%= email %><br> 
     <%= name %><br> 
     <%= phonenumber %><br> 
     <%= address1 %><br> 
     <%= address2 %><br> 
     <button onclick="logout()">Logout </button> 
    <% } else { %> 
    <form> 
     <label>Email</label> 
     <input type="text" id="email"> 
     <label>Password</label> 
     <input type="password" id="password"> 
     <button type="submit" onclick="login()">Login</button> 
    </form> 
    <% } %> 
    <form> 
     <label>Name</label> 
     <input type="text" id="sname"> 
     <label>Email</label> 
     <input type="text" id="semail"> 
     <label>Password</label> 
     <input type="password" id="spassword"> 
     <label>Phone Number</label> 
     <input type="text" id="sphonenumber"> 
     <label>Address 1</label> 
     <input type="text" id="saddress1"> 
     <label>Address 2</label> 
     <input type="text" id="saddress2"> 
     <button type="submit" onclick="signup()">Signup</button> 
    </form> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
    <script src="javascripts/indx.js"></script> 
</body> 

答えて

1

いくつかの特殊性あなたのコードで

request.on('doneProc' , function (rowCount, more, returnStatus, rows) { 
     if (rowCount == 1) { 
      //res is NOT defined! 
      res.redirect('/');//This doesnt redirect! 
     } 
     else { 
      //res is NOT defined! 
      res.send("Loging Unsuccesful!"); 
     } 
    }); 

これは、リダイレクトを行う方法ではありません。あなたは(たとえば)にクライアント側からのURLリダイレクトするには次の条件を満たす必要があります。yourapp/yourpath、yourpathはあなたのノード/ Expressアプリケーションにルートを作成しますパスです:

app.get('/yourpath', function(req, res) { 
    res.redirect('/') 
}); 
+0

ことだからと言っていますリダイレクトはサーバー側とクライアント側の両方から行う必要がありますか?私のnode.jsファイルと対話するためにajaxを使用しているとすれば、urlは 'myappname/mypath'でなければならず、node.jsコードにリダイレクトする必要がありますか?すべての助けをありがとう!私はnode.jsで新しく、これはすべて馬鹿に見えるかもしれません。 –

関連する問題