2017-07-23 5 views
0

Ich habe erstellt Fehler Instanzen wie folgt aus:HapiJS Fehlerbehandlung

class InsufficientScope extends Error { 
    constructor(resource = false) { 
    const errorMessage = resource 
     ? 'User does not have enough privileges to access this resource.' 
     : `User does not have enough privileges to access the ${resource}`; 

    super(errorMessage); 

    this.type = 'authorization_error'; 
    this.statusCode = '403'; 
    } 
} 

Wenn ich diese Fehler in meinem Handler wie Rückkehr werfen reply(new InsufficientScope());, ist es immer zu einem Boom-Objekt umgewandelt irgendwie. Wird jeder Fehler in Hapi geworfen und in ein Boom-Objekt mit seinen Eigenschaften umgewandelt?

Da ich in der Lage sein möchte, Verhalten für einige spezifische Fehler angeben (d. H. Protokollierung Ja/Nein usw.) über die OnPreResponse-Erweiterungspunkt. Aber ich kann nicht wirklich unterscheiden, ob es mein eigener Fehler ist oder ein Fehler von Hapi, denn sie sehen alle gleich aus.

Ich kann auch nicht Dinge tun, wie:

if (req.response instanceof InsufficientScope) { 
// do something 
} 

Ich kann auch nicht Boom.create verwenden, weil das wird nicht eine Instanz sein, sondern nur eine einfache Aufgabe.

Antwort

0

Sie können auf zwei Arten tun
1) Antwort (null, neue InsufficientScope())
2) onPreresponse Sie Haken

server.ext('onPreResponse', (request, reply) => { 
    if((request.response.isBoom) 
    { 
    return reply(null,new InsufficientScope()) 
    } 
    return reply.continue(); 
}) 
wie dies tun können