2016-06-29 7 views
0

Ich schreibe etwas Rendering-Code für eine Express-App, ich möchte Fehler erfassen und dann in der Funktion Rendern ausgeben, aber ich bin mir nicht sicher, wie ich sie von einer Methode auf die andere verschieben werde.Werte aus der referenzierten Funktion in der Versprechenskette übergeben?

app.get('/user/makeRider', auth, 
    (req, res, next) => { 
     req.user.user.makeRider(req.query) 
      .catch(error) 
      .then(render(req, res)); 
    } 
); 

var render = (req, res) => { 
    var response = { 
     params: req.query, 
     user: req.user.fulluser 
    }; 
    res.json(response); 
}, 
error = (reason) => { 
    reason.errors.forEach((error) =>{ 
     console.log(error); 
    }); 
    return; 
}; 
+0

'res.status (500) .send ()'. Ihr Fehler ist, welche Nachricht Sie senden müssen (könnte alle Ihre Fehlermeldungen in einem JSON-Format sein) –

Antwort

0

Sie Fehlerfunktion verwenden können, als letzte Middleware in der Kette und einfach die Anforderung an die nächste Kette passieren:

var render = (req, res) => { 
    var response = { 
     params: req.query, 
     user: req.user.fulluser 
    }; 
    res.json(response); 
} 

app.get('/user/makeRider', auth, 
    (req, res, next) => { 
     req.user.user.makeRider(req.query) 
      .catch(next) 
      .then(render(req, res)); 
    } 
); 

app.use((reason, req, res, next) => { 
    res.send(reason.errors); 
    // or you can send them as json: res.status(404).json({errors: reason.errors}) 
}); 

von Vorsicht Problem in Ihrem Code Hissen werden die Variablendeklarationen nach oben gehoben, aber keine Bei ihren Zuweisungen werden die Fehler- und Renderfunktion möglicherweise als nicht definiert angezeigt, wenn auf Ihre Route zugegriffen wird.

0

Eine schnelle, aber vielleicht nicht die eleganteste Lösung wäre Fehler als Parameter für Ihre Render-Funktion hinzuzufügen, dann könnte man so etwas tun:

app.get('/user/makeRider', auth, 
    (req, res, next) => { 
     req.user.user.makeRider(req.query) 
      .catch((reason)=>{ 
      render(req, res, reason.errors) 
      }) 
      .then(render(req, res)); 
    } 
); 

var render = (req, res, errs) => { 
    var response = { 
     params: req.query, 
     user: req.user.fulluser 
    }; 
    res.json(response); 
}; 
Verwandte Themen