2016-04-11 9 views
0

Am Ende der Datei verwenden, aber in meinemSeite 404, wenn params in url

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

es nicht funktionieren überhaupt und es bricht den Nodeserver, wenn Sie eine ungültige ID wie/path/23187123 schreiben. Ich habe versucht, etwas zu tun:

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;} 

Um zu überprüfen, ob die ID vorhanden ist, und dann die Anforderung abbrechen, aber das funktioniert auch nicht. Wie kann ich mit der 404-Seite arbeiten?

Antwort

0

Verwenden next() innerhalb der Route, wenn es nicht eine bestimmte Anforderung zu behandeln weiß. Wenn in Ihrer Tabelle keine Datensätze in der Tabelle table vorhanden sind, sollte die Anforderung an den nächsten Handler weitergeleitet werden, der dieser Anforderung entspricht. Dies ist wahrscheinlich Ihre 404.

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 immer 'Typeerror: next kein function' ist sogar mit ihm in' app.get ('/ path /: id', function (req, res, next) { ' –

+0

Du hast Recht, Ich habe vergessen, "next" als dritten Parameter hinzuzufügen. Aber es sollte damit arbeiten. Was ist deine ausdrückliche Version? – goenning

+0

Ich benutze 4.13.4 –

0

können Sie next() verwenden, um die Bearbeitung der Anforderung an andere Middleware zu übergeben:

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'); 
});