Ich verwende Versprechen in Express-Middleware. Ich möchte die async/await-Methoden verwenden.Wie kann ich das Standardverhalten für abgelehnte Versprechen für alle meine Express-Middlewares festlegen?
app.get('/data1',async function(req,res) {
data = await getData1(); // This line throw an error,
res.send(data)
})
app.get('/data2',async function(req,res) {
data = await getData2(); // This line throw an error
res.send(data)
})
Dies lässt den Browser für immer warten. Auf dem Server sehe ich
(node:251960) UnhandledPromiseRejectionWarning: Unhandled promise rejection
Nun, es zu beheben für eine Middleware ich tue:
app.get('/data1',async function (req,res){
return (async function(){
data = await getData1()
})().catch(() => {
res.send("You have an error")
}
})
app.get('/data2',async function (req,res){
return (async function(){
data = await getData2()
})().catch(() => {
res.send("You have an error")
}
})
ich diese repetion nicht mögen. Wie kann ich einen Standardfehler einstellen? Ich habe zum Beispiel versucht:
app.use(function(error,req,res,next)){
res.send('You have an error')
}
Aber es hat nicht funktioniert.
Mit anderen Worten: Wie Standardfunktion festgelegt wird, wenn Express-Middlewares eine zurückgewiesene Versprechen zurückgeben?
Dies ist genau das, was Sie tun sollten, ja. Sie können jedoch 'Next' mit dem Fehler aufrufen, um die Express-Fehlerbehandlung zu verwenden. – Bergi