2015-06-21 28 views
0

我在重定向到與所需JavaScript文件不同的路由時遇到問題。正如你在oauth2.js中看到的,我有一個函數驗證當調用request.post()方法的回調函數時調用它。這意味着我不能將快速實例化(app)作爲參數傳遞。如何重定向到包含文件的路由

server.js

var app = require('express); 
var login = require('./routes/login'); 
app.use('/login', login); 

var oauth2 = require('./oauth2'); 
oauth2.auth(); 

app.get('/login', function(req, res) { 
    res.sendFile('./public/login.html', { root: __dirname }); 
}); 

app.listen(8080); 

路線/ login.js

var express = require('express'); 
    var router = express.Router(); 
    module.exports = function(){ 
     router.get('/login', function(req, res){ 
      console.log('Logging in...'); 
     } 
     return router; 
    } 

oauth2.js

... 
var request = require('request'); 
request.post({ 
    uri: uri, 
    headers:headers, 
    body:data 
}, validate); 

function validate(err, res, body){ 
    ... 

    // REDIRECT TO /login.html 
} 

我如何可以重定向從validate方法來/login.html?

回答

1

您可以使用中間件搶快遞的響應對象,並使用它時的oauth2返回一個結果:

var app = require('express); 
var login = require('./routes/login'); 
app.use('/login', login); 

var oauth2 = require('./oauth2'); 

app.use(function (req, res, next) { 
    oauth2.auth(function (err, res, body) { 
    // validate 
    res.redirect('/login'); 
    }); 
}); 

app.get('/login', function(req, res) { 
    res.sendFile('./public/login.html', { root: __dirname }); 
}); 

和你oauth2.js應該接受回調:

// some code.. 

function auth (cb) { 
    // some code .. 
    request.post({ 
     uri: uri, 
     headers:headers, 
     body:data 
    }, cb); 
    // some code .. 
} 

// some code .. 
相關問題