2017-06-06 4 views
1

Ich habe ein Problem mit meinem NodeJs Server.Versprechen Sie dann und fangen Sie in NodeJS

Was ich will ist, wenn eine E-Mail in meiner Datenbank existiert, möchte ich eine E-Mail an diese Adresse senden, aber wenn nicht, möchte ich senden und Fehlermeldung an den Client.

Ich habe diesen Controller:

reset(req, res) { 
    return this.service.getByEmail(req.body.email) 
     .then(this.mapper.outputEmail.bind(this.mapper)) 
     .then(res.json.bind(res)).catch(res.send.bind(res)); 
    } 

ich die E-Mail in einer post-Methode senden. Ich benutze einen Dienst, der meine db für die E-Mail-Suche ruft, und ich habe diesen Mapper:

outputEmail(outputEmail){ 
     return { 
     email: outputEmail.email 
    }; 
    } 

Mein Service:

getByEmail(correo) { 
    return this.db.find({ 
     where: { email: correo } 
    }); 
    } 

Mein Problem ist, dass ich weiß nicht, wie zu kontrollieren, wenn ich bekomme ein leeres JSON-Objekt .. Wenn ich einen Post mit einer E-Mail sende, die es nicht gibt, erhalte ich eine {} Antwort, aber wenn ich eine existierende E-Mail sende, bekomme ich {email: [email protected]}.

Was ich will ist, wenn ich ein leeres json bekomme, möchte ich nur einen Fehler, der besagt, dass E-Mail existiert nicht, aber wenn die Abfrage in der db bekommt eine echte E-Mail möchte ich weiterhin eine andere Methode, um eine zu senden E-Mail an diese Adresse.

+0

Sie können Ausnahmen innerhalb Ihrer Dienste auslösen, und diese Ausnahmen werden vom catch-Block aufgehoben. Dies bricht die Kette der Ausführung von angeketteten Thesen. – Herku

Antwort

1

Sie versuchen festzustellen, ob ein E-Mail-Feld auf Ihrem JSON-Objekt vorhanden ist. Tun Sie einfach:

outputEmail(outputEmail){ 
    if(outputEmail.email){ 
     return { 
      email: outputEmail.email 
     }; 
    }else{ 
     throw new Error("No email found!"); 
    } 
} 
+0

Das ist es! Vielen Dank! – Tibo

Verwandte Themen