2017-06-06 59 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