我有这样的路线
router.get('/:username', function(req, res, next) {
if(req.params.username){
Account.find({'username':req.params.username},function(err,user){
if(user.length > 0){
res.render('index',{
title:capitalizeFirstLetter(req.params.username)
});
}
})
}
});
每当我放任何用户时,它都能正常工作。名称。但是,如果我放入不在数据库中的东西,它会永远加载。我有很多这样的路线,所以如果我修改每个路线去404错误页面会很乏味。
我想知道为什么默认404不再有效,这是
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
答案 0 :(得分:0)
这是因为您在(users.length === 0)
时没有处理此案例。
在这种情况下你应该抛出错误。
答案 1 :(得分:0)
router.get('*', function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
如果您在路线末尾使用*符号,则任何未处理的路线都将默认为此。
答案 2 :(得分:0)
你的方法是错误的,就像你说如果我放任何用户然后它没关系,但当我把任何不在
db
的值然后它卡住了。因为你没有处理第二种情况或else
情况,所以它肯定会被卡住。这不是路线问题路线是正确的,但它处理问题。
您需要处理这两个条件
Success and fail
if (user.length > 0) {
res.render('index', {
title: capitalizeFirstLetter(req.params.username)
});
}else{
res.render('index', {
title: 'Your error stuff'
});
}
其他答案在route is not found
有效,但在您的情况下,您的问题中找到的每条路线都是