2016-04-11 37 views
0

yılında params kullanırken404 sayfa dosyanın sonunda url

app.use(function(req,res){ 
res.render('404.jade'); 
}); 

ettik ve bu www.website/wrongpath için çalışır, ancak benim

app.get('/path/:id', function(req, res){} 

meydana gelmediği Hiç çalışma ve/path/23187123 gibi kötü bir kimlik yazdığınızda nodeserver keser. Ben böyle bir şey yaptığını denedim:

function checkifexists(){ 
    var checktime = connection.query('SELECT * FROM table WHERE id = ?', [globalid], function(err, results, rows){ 
    if(results.length == 0){ 
     //console.log("0"); 
     return true; 
    } 
    return false; 
    }); 
} 

if(checkifexists()){return;} 

id var olup olmadıklarını ve daha sonra isteği iptal etmek için ama o da çalışmıyor. Bunu 404 sayfayla çalışmasını nasıl sağlayabilirim?

cevap

0

Kullanım next() zaman belirli bir isteği işlemek için bilmiyor. Durumunuzda, table tablosunda herhangi bir kayıt yoksa, bu isteği, muhtemelen 404'unuz olan bir sonraki işleyiciye iletmelidir.

app.get('/path/:id', function(req, res, next){ 
    connection.query('SELECT * FROM table WHERE id = ?', [globalid], function(err, results, rows){ 
    if(results.length == 0){ 
     next(); 
     return; 
    } 

    //do something with rows 
    //res.render('view.jade') 
    }); 
} 
+0

Im alma 'TypeError: Sonraki (app.get' hatta onunla bir function' değil '/ yol /: id', function (req, res, sonraki) { 'Haklısınız –

+0

, Ben üçüncü parametre olarak 'next' eklemeyi unuyorum.Ama onunla çalışıyor olmalıydı.Online sürümü nedir? – goenning

+0

4.13.4 kullanıyorum –

0

diğer katman için isteğin işlenmesini geçmek için next() kullanabilirsiniz: rotanız

app.get('/path/:id', function(req, res, next){ 

//say if id is too big, don't handle it in this controller 
if(req.params.id > 10000) { 
    next(); 
    return; 
} 

//other code 
}) 
//- so we go further down 

//here comes the error display 
app.use(function(req,res){ 
res.render('404.jade'); 
});