2016-07-11 9 views
2

Derzeit verwende ich viele Express-Routen. Einige der Routen können ziemlich lang sein. Eine allgemeine Route sieht wie folgt aus:Undefiniertes Argument bei Verwendung der Callback-Funktion für Express-Route

router.get('/api/comments', function(req, res, next){ 
    Comment.find({"user": req.payload._id}).exec(function(err,comments){ 
    if(err){return next(err); } 
    res.json(comments); 
    }) 
} 

Das funktioniert gut. Aber ich rufe Routen mehrmals an und es kann ziemlich langwierig sein. Also versuche ich eine Callback-Funktion zu erstellen, die von den verschiedenen Routen aufgerufen werden kann. Z.B.

Allerdings werde ich immer einen Fehler "Req ist nicht definiert" in der letzten Zeile erhalten. Ich frage mich nur, was ich hier falsch mache?

Antwort

1

router nimmt eine Funktion als Argument nicht das Ergebnis der Ausführung dieser Funktion.

router.get('/api/comments', testFunction); wird funktionieren.

+0

Es funktioniert. Aber dann, wenn ich einige Argumente an die Funktion übergeben muss, wie mache ich das? – Sydney

+0

@Sydney - Verwenden Sie '.bind()', um die Argumente zu binden, oder verwenden Sie eine anonyme Funktion, die nichts ausführt, indem Sie Ihre Funktion mit den gewünschten Argumenten aufrufen. – jfriend00

1

Versuchen Sie, router.get('/api/comments', testFunction); statt router.get('/api/comments', function(req, res, next)

Verwandte Themen