2017-08-07 1 views
0

Erfassen Sie alle Fehler in einem hapi-Anforderungslebenszyklus. Ich habe eine Anmeldeprozedur,Fehlerbehandlung in HAPI

public signup(request: Hapi.Request, reply: Hapi.Base_Reply) { 
    this.database.user.create(request.payload).then((user: any) => { 
     return reply({ 
      "success": true 
     }); 
    }).catch((err) => { 
     reply(Boom.conflict('User with the given details already exists')); 
    }); 
} 

Nun, ich bin der Fehler zu kontrollieren, aber ich kann nicht immer sicher sein, dass ich nur diese Fehlermeldung bekommen. Was ist, wenn ein Fehler in der Datenbank vorliegt? Wie Sie solche Datenbankfehler oder andere unbekannte Fehler für alle Anfragen abfangen können. ???

Antwort

0

Vielleicht haben Sie die err.message in Ihrer Antwort, wie

reply(Boom.conflig(err.message)) 

zurückkehren oder wenn Sie den Fehler verwalten oder manipulieren wollen, müssen Sie die Art des Fehlers überprüfen wie

if (err instanceof DatabaseError) { 
    // manage database error 
} 
0

ich dachte, einen Weg, um solche Fehler in Hapi zu behandeln. Was ich suchte war ein PreResponse Handler. Jetzt kann der PreResponse-Handler alle Fehler protokollieren und ich kann eine 500-Fehlerantwort auslösen.

Was ich sage ist, durch einfaches

reply(err) 

Schreiben Ich kann einen 500-Fehler senden und diesen Fehler mit Handler Voransprech fangen kann. So etwas wie dies,

server.ext('onPreResponse', (request: Hapi.Request, reply: Hapi.ReplyWithContinue) => { 
     const response = request.response; 
     if (!response.isBoom) { // if not error then continue :) 
      return reply.continue(); 
     } 
     console.log(response); 
     return reply(response); 
    }); 
+0

Wenn Sie nur die Fehler protokollieren wollen, können Sie das 'hapi-good' Modul verwenden https://github.com/hapijs/good – ivo