Nodejs:使用res.redirect路由不工作,显示404未找到
nodejs:routing using res.redirect not working showing 404 not found
我正在使用nodejs,express和mongodb构建web应用程序,我是一个初学者。这是我的app.js:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var expressValidator=require('express-validator');
var expressSession=require('express-session');
var login = require('./routes/login');
var homepage = require('./routes/homepage');
var searchStudents=require('./routes/searchStudents');
var addStudents=require('./routes/addStudents');
var editStudents=require('./routes/editStudents');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(expressValidator());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(expressSession({secret:'max',saveUninitialised:false,resave:false}));
app.use('/', login);
app.use('/homepage', homepage);
app.use('/homepage/SearchStudents',searchStudents);
app.use('/homepage/addStudents',addStudents);
app.use('/homepage/editStudents',editStudents);
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;`
我的视图与我的路由名称相似。我能够重定向从登录到主页使用post方法但我不能从主页重定向到搜索学生。显示404错误请帮我解决这个路由问题。这是我的login.js
var express = require('express');
var router = express.Router();
var item;
var output=null;
var mongo =require('mongodb').MongoClient;
var assert=require('assert');
var url='mongodb://localhost:27016/test';
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('login');
});
router.post('/hompage', function(req, res, next) {
item={
user:req.body.username,
password:req.body.password
};
console.log("this is the username/// "+item.user);
mongo.connect(url,function(err,db){
assert.equal(null,err);
result=db.collection('users').findOne({username:item.user},{id:0,password:0},function(err,data){
if(err)
{
db.close();
res.redirect('/');
}
else if(data==null)
{
db.close();
res.redirect('/');
}
else
{
//console.log(data);
db.close();
res.redirect('/homepage');
}
});
});
});
this is my login.ejs
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1 align="center">Login Page</h1>
<form action="/hompage" method="post">
<table align="center">
<tr>
<td><i>Enter Username</i>
</td>
<td>
<input type="text" name="username" placeholder="enter username">
</td>
</tr>
<tr>
<td><i>Enter Password</i></td>
<td>
<input type="password" name="password" placeholder="enter password">
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit">
</td>
</tr>
</table>
</form>
</body>
</html>
这是我的主页:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('homepage');
});
router.post('/homepage/searchStudents', function(req, res, next) {
res.redirect('/homepage/searchStudents');
});
module.exports = router;
这是我的主页。
<html>
<head>
</head>
<body>
<h1>homepage</h1>
<form action="/homepage/searchStudents" method="post">
<input type="submit" value="Search Studetns">
</form>
<form action="/homepage/addStudents" method="post">
<input type="submit" value="Add Studetns">
</form>
</body>
</html>
哇…你的代码有点乱,所以可视化它,我抓住了一个错误在你的404处理程序,你传递抛出与next()函数,所以也许不是重定向时,它得到一个404,你可以拦截它,并呈现自定义的404页面。
关于如何拦截这些状态页(404和500)的示例如下:// Handle 404
app.use(function(req, res) {
res.status(400);
res.render('errors/404', { title: '404' });
});
// Handle 500
app.use(function(error, req, res, next) {
console.log(error);
res.status(500);
res.render('errors/500', { title: '500' });
});
相关文章:
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- PHP Javascript显示/隐藏按钮不工作
- ng隐藏和ng显示无法正常工作
- JQuery隐藏/显示无法正常工作
- 我的时间倒计时脚本在谷歌浏览器中工作正常,但在其他浏览器中打开时它显示为南楠
- 为什么竞争不能在离子中显示(隐藏在标题下方)(离子竞争不能正常工作)
- 背景's/JavaScript在本地显示/工作,而不是在服务器上
- 角度方向ng显示不工作
- 如果没有子's显示-工作不正常
- 在执行 h:命令链接操作时显示工作图像
- 在网页中显示工作流元素的正确方法
- Chrome:JQuery动画;仅当在开发人员工具中选择时才显示工作
- Angular ng显示工作不正常
- 无法使ng隐藏和ng显示工作
- 一个简单的jQuery幻灯片显示工作的DIV
- 我试图让jquery显示/隐藏和attr显示工作
- 不能让JQuery显示工作
- 向客户显示工作人员的位置