承诺然后捕获nodeJS

时间:2017-06-06 16:16:57

标签: javascript node.js email promise

我的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:erwrr@gmail.com}。

我想要的是如果我得到一个空的json,我只想返回一个错误,说电子邮件不存在,但如果db中的查询得到一个真正的电子邮件我想继续执行另一种发送电子邮件的方法到那个地址。

1 个答案:

答案 0 :(得分:1)

您正在尝试确定JSON对象上是否有电子邮件字段。只是做:

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