我无法从必需的JavaScript文件重定向到不同的路线。正如您在oauth2.js中看到的,我有一个函数 validate ,当调用request.post()方法的回调时,会调用该函数。这意味着我无法将express-instantiation(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?
答案 0 :(得分:1)
您可以使用中间件来获取express的响应对象,并在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 ..