我有一个node.js/express/mysql/angular.js应用程序,我试图在用户登录后在服务器端重定向用户。这是服务器端 Controller ,我不知道如何将用户重定向到另一个页面。我尝试过 res.render、res.redirect、window.location.href 但没有成功。我在 res.render() 中遇到的错误是“未指定默认引擎且未提供扩展名。” window.location.href 表示窗口未定义。 res.redirect() 也允许我 console.log 我想要定向的页面的 html。非常感谢任何帮助,谢谢!
var Query = require('./../models/query.js');
module.exports = (function(){
return {
show: function(req,res) {
req.getConnection(function(err,connection){
connection.query('SELECT * FROM users',function(err,rows){
res.json(rows);
});
});
},
add: function(req,res){
var newUser = {
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
password: req.body.password,
created_at: req.body.created_at
};
var table = "users";
Query.insert(req,newUser,table,function(err,results){
if(err) return res.json(err);
Query.find(req,table,function(err,results){
if(err) return res.json(err);
res.json(results);
});
});
},
login: function(req,res) {
var input = req.body;
console.log("got here", input);
req.getConnection(function(req, connection) {
// console.log("got connections",connection);
connection.query('SELECT * FROM users WHERE email = ?',input.email, function(err, rows) {
if (err) {
console.log("User doesn't exist: %s", err);
res.redirect('/', { data:"failed"});
} else {
if (input.password == rows[0].password) {
console.log("User password is matched");
*** success redirect right here ****
res.redirect('/static/taxonomer'+'.html');
} else {
console.log("failed here", rows[0].password);
res.redirect( '/', { data:"failed"});
}
}
});
});
}
};
})();
最佳答案
没有看到你的路由,我猜测上述 Controller 上的登录方法对应于 POST 路由。例如,
app.post('some/login/route', theAboveController.login)
因此,重定向是在客户端控制的。
因此,进行以下更改:
1) 使用 res.send
将重定向 URL 作为字符串发送到客户端。例如,
res.send('/static/taxonomer'+'.html')
2) 然后在客户端的成功回调中,将位置更改为从 res.send 方法收到的 url。例如,
$http.post('/some/login/route', data).then(function(response) {
$window.location.href = response;
}, errorCallback);
关于javascript - 如何在 Express 应用程序中使用纯 JavaScript 进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877403/