Javascript 那就答应吧,抓住机会
我的nodejs服务器有问题 我想要的是,如果我的数据库中存在电子邮件,我想向该地址发送电子邮件,但如果没有,我想向客户端发送错误消息 我有一个控制器:Javascript 那就答应吧,抓住机会,javascript,node.js,email,promise,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.bi
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方法发送电子邮件。我使用一个服务,呼叫我的db查找该电子邮件,我有一个映射器:
outputEmail(outputEmail){
return {
email: outputEmail.email
};
}
我的服务:
getByEmail(correo) {
return this.db.find({
where: { email: correo }
});
}
我的问题是,如果我得到一个空的json对象,我不知道如何控制。。如果我发送了一封不存在的邮件,我会得到一个{}
响应,但是如果我发送了一封存在的邮件,我会得到{email:erwrr@gmail.com}
我想要的是,如果我得到一个空的json,我只想返回一个错误,说明电子邮件不存在,但是如果db中的查询得到一个真实的电子邮件,我想继续执行另一个方法,将电子邮件发送到该地址。您正在尝试确定json对象上是否有电子邮件字段。只要做:
outputEmail(outputEmail){
if(outputEmail.email){
return {
email: outputEmail.email
};
}else{
throw new Error("No email found!");
}
}
您可以在服务内部抛出异常,这些异常将由catch块拾取。这打破了铁链的执行链,就是这样!非常感谢。