我有一个简单的POST请求,可以通过nodemailer发送邮件。
app.post("/sendMail", function(req, res) {
nodemailer.sendMail({ from: 'xx', to: userEmail }, function(error, info) {
if (error) {
return res.send(500, 'Internal error, try again later');
}
res.send(200, 'Mail sent!');
});
});
但是,出于安全原因,我不将用户邮件存储在客户端的任何位置。但是在请求中,我有用户id
。
db中的单个集合如下:
{
id: '1312feew3',
email: 'patrick@hotmail.com',
}
因此,如果我的req.body.id
等于1312feew3
,我需要获取指定的集合并从其中取出email
我试图做简单:
var userEmail = getUserById(req.body.id, function (err, user) {
if (err) {
return res.send(400, 'Something went wrong');
}
return res.json(user);
}).email;
(我将其放在第一个代码的第二行中)
不幸的是,它没有按我预期的那样工作。
它不会引发任何错误,但是邮件没有被发送。
答案 0 :(得分:1)
假设getUserById
是异步的,它不能直接返回用户,而您必须从回调函数中访问它:
getUserById(req.body.id, function (err, user) {
if (err) {
return res.send(400, 'Something went wrong');
}
var userEmail = user.email;
// Send the email here, within the callback as well.
...
return res.json(user);
});