2017-06-06 81 views
1

我遇到了我的nodejs服務器的問題。承諾,然後在nodeJS捕獲

我想要的是,如果電子郵件存在於我的數據庫中,我想發送一封電子郵件到該地址,但如果沒有,我想發送錯誤消息給客戶端。

我有這樣的控制器:

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)); 
    } 

我發送電子郵件的POST方法。我使用調用我的數據庫尋找該電子郵件服務和我有這樣的映射:

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

我的服務:

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

我的問題是,我不知道如何,如果我得到控制一個空的JSON對象..如果我發送一封電子郵件,它不存在,我得到一個{}響應,但如果我發送一個存在的電子郵件,我得到{電子郵件:[email protected]}。

我要的是,如果我得到一個空的JSON,我只想返回一個錯誤的電子郵件犯規存在,但如果在數據庫中查詢得到一個真正的電子郵件,我要繼續執行另一種方法,發送發電子郵件到該地址。

+0

你可以在你的服務中拋出異常,這些異常將被catch塊拾取。這打破了連鎖神殿的執行鏈。 – Herku

回答

1

您試圖確定您的JSON對象上是否有電子郵件字段。只要這樣做:

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

就是這樣!謝謝! – Tibo